Skip to content

Commit

Permalink
Fix common files for mbed
Browse files Browse the repository at this point in the history
  • Loading branch information
yashikno committed Jul 30, 2014
1 parent ee70fe5 commit e81c701
Show file tree
Hide file tree
Showing 23 changed files with 323 additions and 110 deletions.
10 changes: 5 additions & 5 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ SRC += $(COMMON_DIR)/host.c \
$(COMMON_DIR)/action_layer.c \
$(COMMON_DIR)/action_util.c \
$(COMMON_DIR)/keymap.c \
$(COMMON_DIR)/avr/timer.c \
$(COMMON_DIR)/print.c \
$(COMMON_DIR)/bootloader.c \
$(COMMON_DIR)/suspend.c \
$(COMMON_DIR)/util.c \
$(COMMON_DIR)/avr/suspend.c \
$(COMMON_DIR)/avr/xprintf.S \
$(COMMON_DIR)/util.c
$(COMMON_DIR)/avr/timer.c \
$(COMMON_DIR)/avr/bootloader.c


# Option modules
ifdef BOOTMAGIC_ENABLE
SRC += $(COMMON_DIR)/bootmagic.c
SRC += $(COMMON_DIR)/eeconfig.c
SRC += $(COMMON_DIR)/avr/eeconfig.c
OPT_DEFS += -DBOOTMAGIC_ENABLE
endif

Expand Down
File renamed without changes.
File renamed without changes.
24 changes: 23 additions & 1 deletion common/suspend.c → common/avr/suspend.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,29 @@
#include "suspend.h"
#include <stdbool.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include "matrix.h"
#include "action.h"
#include "backlight.h"
#include "suspend_avr.h"
#include "suspend.h"


#define wdt_intr_enable(value) \
__asm__ __volatile__ ( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"wdr" "\n\t" \
"sts %0,%1" "\n\t" \
"out __SREG__,__tmp_reg__" "\n\t" \
"sts %0,%2" "\n\t" \
: /* no outputs */ \
: "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
"r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
"r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
_BV(WDIE) | (value & 0x07)) ) \
: "r0" \
)


void suspend_power_down(void)
Expand Down
27 changes: 27 additions & 0 deletions common/avr/suspend_avr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifndef SUSPEND_AVR_H
#define SUSPEND_AVR_H

#include <stdint.h>
#include <stdbool.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>


#define wdt_intr_enable(value) \
__asm__ __volatile__ ( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"wdr" "\n\t" \
"sts %0,%1" "\n\t" \
"out __SREG__,__tmp_reg__" "\n\t" \
"sts %0,%2" "\n\t" \
: /* no outputs */ \
: "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
"r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
"r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
_BV(WDIE) | (value & 0x07)) ) \
: "r0" \
)

#endif
4 changes: 2 additions & 2 deletions common/host.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ extern "C" {
extern bool keyboard_nkro;
#endif

uint8_t keyboard_idle;
uint8_t keyboard_protocol;
extern uint8_t keyboard_idle;
extern uint8_t keyboard_protocol;


/* host driver */
Expand Down
1 change: 0 additions & 1 deletion common/keyboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <util/delay.h>
#include "keyboard.h"
#include "matrix.h"
#include "keymap.h"
Expand Down
1 change: 0 additions & 1 deletion common/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <avr/pgmspace.h>
#include "keymap.h"
#include "report.h"
#include "keycode.h"
Expand Down
4 changes: 4 additions & 0 deletions common/mbed/bootloader.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "bootloader.h"


void bootloader_jump(void) {}
6 changes: 6 additions & 0 deletions common/mbed/suspend.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <stdbool.h>


void suspend_power_down(void) {}
bool suspend_wakeup_condition(void) { return true; }
void suspend_wakeup_init(void) {}
46 changes: 46 additions & 0 deletions common/mbed/xprintf.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include <cstdarg>
//#include <stdarg.h>
#include "mbed.h"
#include "mbed/xprintf.h"


#define STRING_STACK_LIMIT 120

/* mbed Serial */
Serial ser(UART_TX, UART_RX);

/* TODO: Need small implementation for embedded */
int xprintf(const char* format, ...)
{
/* copy from mbed/common/RawSerial.cpp */
std::va_list arg;
va_start(arg, format);
int len = vsnprintf(NULL, 0, format, arg);
if (len < STRING_STACK_LIMIT) {
char temp[STRING_STACK_LIMIT];
vsprintf(temp, format, arg);
ser.puts(temp);
} else {
char *temp = new char[len + 1];
vsprintf(temp, format, arg);
ser.puts(temp);
delete[] temp;
}
va_end(arg);
return len;

/* Fail: __builtin_va_arg_pack?
* https://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Constructing-Calls.html#Constructing-Calls
void *arg = __builtin_apply_args();
void *ret = __builtin_apply((void*)(&(ser.printf)), arg, 100);
__builtin_return(ret)
*/
/* Fail: varargs can not be passed to printf
//int r = ser.printf("test %i\r\n", 123);
va_list arg;
va_start(arg, format);
int r = ser.printf(format, arg);
va_end(arg);
return r;
*/
}
17 changes: 17 additions & 0 deletions common/mbed/xprintf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef XPRINTF_H
#define XPRINTF_H

//#define xprintf(format, ...) __xprintf(format, ##__VA_ARGS__)

#ifdef __cplusplus
extern "C" {
#endif

int xprintf(const char *format, ...);

#ifdef __cplusplus
}
#endif


#endif
1 change: 0 additions & 1 deletion common/mousekey.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include <stdint.h>
#include <util/delay.h>
#include "keycode.h"
#include "host.h"
#include "timer.h"
Expand Down
20 changes: 14 additions & 6 deletions common/mousekey.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif


uint8_t mk_delay;
uint8_t mk_interval;
uint8_t mk_max_speed;
uint8_t mk_time_to_max;
uint8_t mk_wheel_max_speed;
uint8_t mk_wheel_time_to_max;
#ifdef __cplusplus
extern "C" {
#endif

extern uint8_t mk_delay;
extern uint8_t mk_interval;
extern uint8_t mk_max_speed;
extern uint8_t mk_time_to_max;
extern uint8_t mk_wheel_max_speed;
extern uint8_t mk_wheel_time_to_max;


void mousekey_task(void);
Expand All @@ -66,4 +70,8 @@ void mousekey_off(uint8_t code);
void mousekey_clear(void);
void mousekey_send(void);

#ifdef __cplusplus
}
#endif

#endif
11 changes: 11 additions & 0 deletions common/progmem.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#ifndef PROGMEM_H
#define PROGMEM_H 1

#if defined(__AVR__)
# include <avr/pgmspace.h>
#elif defined(__arm__)
# define PROGMEM
# define pgm_read_byte(p) *(p)
#endif

#endif
20 changes: 0 additions & 20 deletions common/suspend.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,6 @@

#include <stdint.h>
#include <stdbool.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>


#define wdt_intr_enable(value) \
__asm__ __volatile__ ( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"wdr" "\n\t" \
"sts %0,%1" "\n\t" \
"out __SREG__,__tmp_reg__" "\n\t" \
"sts %0,%2" "\n\t" \
: /* no outputs */ \
: "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
"r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
"r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
_BV(WDIE) | (value & 0x07)) ) \
: "r0" \
)


void suspend_power_down(void);
Expand Down
8 changes: 8 additions & 0 deletions keyboard/mbed_onekey/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,21 @@ OBJECTS = \
$(OBJDIR)/./mbed_driver.o \
$(OBJDIR)/./main.o

CONFIG_H = config.h

SYS_OBJECTS =

INCLUDE_PATHS = -I.

LIBRARY_PATHS =
LIBRARIES =

# Build Options
# Comment out to disable
#BOOTMAGIC_ENABLE = yes
MOUSEKEY_ENABLE = yes


include mbed.mk
include common.mk
include gcc.mk
70 changes: 64 additions & 6 deletions keyboard/mbed_onekey/common.mk
Original file line number Diff line number Diff line change
@@ -1,21 +1,79 @@
COMMON_DIR = common
OBJECTS += \
$(OBJDIR)/$(COMMON_DIR)/mbed/timer.o \
$(OBJDIR)/$(COMMON_DIR)/mbed/xprintf.o \
$(OBJDIR)/$(COMMON_DIR)/action.o \
$(OBJDIR)/$(COMMON_DIR)/action_tapping.o \
$(OBJDIR)/$(COMMON_DIR)/action_macro.o \
$(OBJDIR)/$(COMMON_DIR)/action_layer.o \
$(OBJDIR)/$(COMMON_DIR)/action_util.o \
$(OBJDIR)/$(COMMON_DIR)/host.o \
$(OBJDIR)/$(COMMON_DIR)/keymap.o \
$(OBJDIR)/$(COMMON_DIR)/keyboard.o \
$(OBJDIR)/$(COMMON_DIR)/util.o \
$(OBJDIR)/$(COMMON_DIR)/mbed/suspend.o \
$(OBJDIR)/$(COMMON_DIR)/mbed/timer.o \
$(OBJDIR)/$(COMMON_DIR)/mbed/xprintf.o \
$(OBJDIR)/$(COMMON_DIR)/mbed/bootloader.o \

INCLUDE_PATHS += \
-I$(TMK_DIR)/$(COMMON_DIR)

CC_FLAGS += -include $(CONFIG_H)



# Option modules
ifdef BOOTMAGIC_ENABLE
$(error Not Supported)
OBJECTS += $(OBJDIR)/$(COMMON_DIR)/bootmagic.o
OBJECTS += $(OBJDIR)/$(COMMON_DIR)/mbed/eeprom.o
OPT_DEFS += -DBOOTMAGIC_ENABLE
endif

ifdef MOUSEKEY_ENABLE
OBJECTS += $(OBJDIR)/$(COMMON_DIR)/mousekey.o
OPT_DEFS += -DMOUSEKEY_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
endif

ifdef EXTRAKEY_ENABLE
$(error Not Supported)
OPT_DEFS += -DEXTRAKEY_ENABLE
endif

ifdef CONSOLE_ENABLE
$(error Not Supported)
OPT_DEFS += -DCONSOLE_ENABLE
else
OPT_DEFS += -DNO_PRINT
OPT_DEFS += -DNO_DEBUG
endif

ifdef COMMAND_ENABLE
$(error Not Supported)
SRC += $(COMMON_DIR)/command.c
OPT_DEFS += -DCOMMAND_ENABLE
endif

ifdef NKRO_ENABLE
$(error Not Supported)
OPT_DEFS += -DNKRO_ENABLE
endif

ifdef SLEEP_LED_ENABLE
$(error Not Supported)
SRC += $(COMMON_DIR)/sleep_led.c
OPT_DEFS += -DSLEEP_LED_ENABLE
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
endif

ifdef BACKLIGHT_ENABLE
$(error Not Supported)
SRC += $(COMMON_DIR)/backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
endif

# $(OBJDIR)/$(COMMON_DIR)/keyboard.o \
# $(OBJDIR)/$(COMMON_DIR)/keymap.o \
# $(OBJDIR)/$(COMMON_DIR)/bootloader.o \
# $(OBJDIR)/$(COMMON_DIR)/suspend.o \
ifdef KEYMAP_SECTION_ENABLE
$(error Not Supported)
OPT_DEFS += -DKEYMAP_SECTION_ENABLE
EXTRALDFLAGS = -Wl,-L$(TOP_DIR),-Tldscript_keymap_avr5.x
endif
7 changes: 7 additions & 0 deletions keyboard/mbed_onekey/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#ifndef CONFIG_H
#define CONFIG_H

#define MATRIX_ROWS 1
#define MATRIX_COLS 1

#endif
3 changes: 2 additions & 1 deletion keyboard/mbed_onekey/gcc.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ SIZE = $(GCC_BIN)arm-none-eabi-size
CHKSUM = ~/Dropbox/MBED/tool/lpc-vector-checksum

CPU = -mcpu=cortex-m0 -mthumb
CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections

CC_FLAGS += $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections
CC_FLAGS += -MMD -MP
CC_SYMBOLS = -DTARGET_LPC11U35_401 -DTARGET_M0 -DTARGET_NXP -DTARGET_LPC11UXX -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M0 -DARM_MATH_CM0 -DMBED_BUILD_TIMESTAMP=1399108688.49 -D__MBED__=1

Expand Down
Loading

0 comments on commit e81c701

Please sign in to comment.