diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/avr/suspend.c | 27 | ||||
-rw-r--r-- | common/command.c | 1 | ||||
-rw-r--r-- | common/matrix.h | 9 | ||||
-rw-r--r-- | common/mbed/xprintf.cpp | 5 | ||||
-rw-r--r-- | common/print.c | 12 | ||||
-rw-r--r-- | common/suspend.h | 2 |
6 files changed, 41 insertions, 15 deletions
diff --git a/common/avr/suspend.c b/common/avr/suspend.c index 66a579fd78..80243f02bc 100644 --- a/common/avr/suspend.c +++ b/common/avr/suspend.c @@ -7,6 +7,7 @@ #include "backlight.h" #include "suspend_avr.h" #include "suspend.h" +#include "timer.h" #ifdef PROTOCOL_LUFA #include "lufa.h" #endif @@ -52,11 +53,13 @@ void suspend_idle(uint8_t time) * WDTO_4S * WDTO_8S */ -void suspend_power_down(uint8_t wdto) +static uint8_t wdt_timeout = 0; +static void power_down(uint8_t wdto) { #ifdef PROTOCOL_LUFA if (USB_DeviceState == DEVICE_STATE_Configured) return; #endif + wdt_timeout = wdto; // Watchdog Interrupt Mode wdt_intr_enable(wdto); @@ -67,7 +70,6 @@ void suspend_power_down(uint8_t wdto) // - prescale clock // - BOD disable // - Power Reduction Register PRR - set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sei(); @@ -78,6 +80,11 @@ void suspend_power_down(uint8_t wdto) wdt_disable(); } +void suspend_power_down(void) +{ + power_down(WDTO_15MS); +} + bool suspend_wakeup_condition(void) { matrix_power_up(); @@ -103,15 +110,13 @@ void suspend_wakeup_init(void) /* watchdog timeout */ ISR(WDT_vect) { - /* wakeup from MCU sleep mode */ -/* - // blink LED - static uint8_t led_state = 0; - static uint8_t led_count = 0; - led_count++; - if ((led_count & 0x07) == 0) { - led_set((led_state ^= (1<<USB_LED_CAPS_LOCK))); + // compensate timer for sleep + switch (wdt_timeout) { + case WDTO_15MS: + timer_count += 15 + 2; // WDTO_15MS + 2(from observation) + break; + default: + ; } -*/ } #endif diff --git a/common/command.c b/common/command.c index 971ef7f0af..1a507e3a46 100644 --- a/common/command.c +++ b/common/command.c @@ -194,6 +194,7 @@ static bool command_common(uint8_t code) case KC_CAPSLOCK: if (host_get_driver()) { host_driver = host_get_driver(); + clear_keyboard(); host_set_driver(0); print("Locked.\n"); } else { diff --git a/common/matrix.h b/common/matrix.h index 23fef78f74..107ee72653 100644 --- a/common/matrix.h +++ b/common/matrix.h @@ -35,6 +35,10 @@ typedef uint32_t matrix_row_t; #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1<<col)) +#ifdef __cplusplus +extern "C" { +#endif + /* number of matrix rows */ uint8_t matrix_rows(void); /* number of matrix columns */ @@ -48,7 +52,7 @@ bool matrix_is_modified(void) __attribute__ ((deprecated)); /* whether a swtich is on */ bool matrix_is_on(uint8_t row, uint8_t col); /* matrix state on row */ -matrix_row_t matrix_get_row(uint8_t row); +matrix_row_t matrix_get_row(uint8_t row); /* print matrix for debug */ void matrix_print(void); @@ -57,5 +61,8 @@ void matrix_print(void); void matrix_power_up(void); void matrix_power_down(void); +#ifdef __cplusplus +} +#endif #endif diff --git a/common/mbed/xprintf.cpp b/common/mbed/xprintf.cpp index 4342b79f80..3647ece751 100644 --- a/common/mbed/xprintf.cpp +++ b/common/mbed/xprintf.cpp @@ -6,6 +6,10 @@ #define STRING_STACK_LIMIT 120 +//TODO +int xprintf(const char* format, ...) { return 0; } + +#if 0 /* mbed Serial */ Serial ser(UART_TX, UART_RX); @@ -44,3 +48,4 @@ int xprintf(const char* format, ...) return r; */ } +#endif diff --git a/common/print.c b/common/print.c index c13a29f317..ca94e1e5d6 100644 --- a/common/print.c +++ b/common/print.c @@ -22,13 +22,14 @@ * THE SOFTWARE. */ -#include <avr/io.h> -#include <avr/pgmspace.h> +#include <stdint.h> #include "print.h" #ifndef NO_PRINT +#if defined(__AVR__) + #define sendchar(c) xputc(c) @@ -37,4 +38,11 @@ void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) xdev_out(sendchar_func); } +#elif defined(__arm__) + +// TODO +//void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) { } + +#endif + #endif diff --git a/common/suspend.h b/common/suspend.h index f339c670ac..80617a8244 100644 --- a/common/suspend.h +++ b/common/suspend.h @@ -6,7 +6,7 @@ void suspend_idle(uint8_t timeout); -void suspend_power_down(uint8_t timeout); +void suspend_power_down(void); bool suspend_wakeup_condition(void); void suspend_wakeup_init(void); |