summaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/common/avr/suspend.c28
-rw-r--r--tmk_core/common/keyboard.c36
-rw-r--r--tmk_core/common/keyboard.h5
-rw-r--r--tmk_core/protocol/bluefruit/main.c15
-rw-r--r--tmk_core/protocol/chibios/main.c2
-rw-r--r--tmk_core/protocol/vusb/main.c1
6 files changed, 66 insertions, 21 deletions
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c
index 1194a040e..b29447ac4 100644
--- a/tmk_core/common/avr/suspend.c
+++ b/tmk_core/common/avr/suspend.c
@@ -142,20 +142,20 @@ static void power_down(uint8_t wdto) {
#endif
suspend_power_down_kb();
- // TODO: more power saving
- // See PicoPower application note
- // - I/O port input with pullup
- // - prescale clock
- // - BOD disable
- // - Power Reduction Register PRR
- set_sleep_mode(SLEEP_MODE_PWR_DOWN);
- sleep_enable();
- sei();
- sleep_cpu();
- sleep_disable();
-
- // Disable watchdog after sleep
- wdt_disable();
+ // TODO: more power saving
+ // See PicoPower application note
+ // - I/O port input with pullup
+ // - prescale clock
+ // - BOD disable
+ // - Power Reduction Register PRR
+ set_sleep_mode(SLEEP_MODE_PWR_DOWN);
+ sleep_enable();
+ sei();
+ sleep_cpu();
+ sleep_disable();
+
+ // Disable watchdog after sleep
+ wdt_disable();
}
#endif
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index 6f659b244..15652276b 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -139,6 +139,40 @@ __attribute__ ((weak))
void matrix_setup(void) {
}
+/** \brief keyboard_pre_init_user
+ *
+ * FIXME: needs doc
+ */
+__attribute__ ((weak))
+void keyboard_pre_init_user(void) { }
+
+/** \brief keyboard_pre_init_kb
+ *
+ * FIXME: needs doc
+ */
+__attribute__ ((weak))
+void keyboard_pre_init_kb(void) {
+ keyboard_pre_init_user();
+}
+
+/** \brief keyboard_post_init_user
+ *
+ * FIXME: needs doc
+ */
+
+__attribute__ ((weak))
+void keyboard_post_init_user() {}
+
+/** \brief keyboard_post_init_kb
+ *
+ * FIXME: needs doc
+ */
+
+__attribute__ ((weak))
+void keyboard_post_init_kb(void) {
+ keyboard_post_init_user();
+}
+
/** \brief keyboard_setup
*
* FIXME: needs doc
@@ -146,6 +180,7 @@ void matrix_setup(void) {
void keyboard_setup(void) {
disable_jtag();
matrix_setup();
+ keyboard_pre_init_kb();
}
/** \brief is_keyboard_master
@@ -199,6 +234,7 @@ void keyboard_init(void) {
#if defined(NKRO_ENABLE) && defined(FORCE_NKRO)
keymap_config.nkro = 1;
#endif
+ keyboard_post_init_kb(); /* Always keep this last */
}
/** \brief Keyboard task: Do keyboard routine jobs
diff --git a/tmk_core/common/keyboard.h b/tmk_core/common/keyboard.h
index ea2f336e9..bf8b71fb7 100644
--- a/tmk_core/common/keyboard.h
+++ b/tmk_core/common/keyboard.h
@@ -70,6 +70,11 @@ void keyboard_set_leds(uint8_t leds);
/* it runs whenever code has to behave differently on a slave */
bool is_keyboard_master(void);
+void keyboard_pre_init_kb(void);
+void keyboard_pre_init_user(void);
+void keyboard_post_init_kb(void);
+void keyboard_post_init_user(void);
+
#ifdef __cplusplus
}
#endif
diff --git a/tmk_core/protocol/bluefruit/main.c b/tmk_core/protocol/bluefruit/main.c
index 0dbb637e2..8a6386b4e 100644
--- a/tmk_core/protocol/bluefruit/main.c
+++ b/tmk_core/protocol/bluefruit/main.c
@@ -42,13 +42,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
int main(void)
-{
+{
CPU_PRESCALE(0);
// DDRD = _BV(PD5);
// DDRB = _BV(PB0);
-
+
// PORTD = _BV(PD5);
// PORTB = _BV(PB0);
@@ -59,22 +59,23 @@ int main(void)
// while (!usb_configured()) /* wait */
+ keyboard_setup();
dprintf("Initializing keyboard...\n");
keyboard_init();
-
+
// This implementation is pretty simplistic... if the USB connection
// is not configured, choose the Bluefruit, otherwise use USB
// Definitely would prefer to have this driven by an input pin and make
// it switch dynamically - BCG
// if (!usb_configured()) {
-
+
// // Send power to Bluefruit... Adafruit says it takes 27 mA, I think
- // // the pins should provide 40 mA, but just in case I switch the
+ // // the pins should provide 40 mA, but just in case I switch the
// // Bluefruit using a transistor - BCG
// DDRB = _BV(PB6);
// PORTB |= _BV(PB6);
-
+
dprintf("Setting host driver to bluefruit...\n");
host_set_driver(bluefruit_driver());
@@ -131,7 +132,7 @@ int main(void)
// usb_remote_wakeup();
// }
// }
-// keyboard_task();
+// keyboard_task();
// }
// }
diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c
index 5436d4909..8de55bfe3 100644
--- a/tmk_core/protocol/chibios/main.c
+++ b/tmk_core/protocol/chibios/main.c
@@ -119,6 +119,8 @@ int main(void) {
// TESTING
// chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
+ keyboard_setup();
+
/* Init USB */
init_usb_driver(&USB_DRIVER);
diff --git a/tmk_core/protocol/vusb/main.c b/tmk_core/protocol/vusb/main.c
index f6a0c7e9a..86c2188c8 100644
--- a/tmk_core/protocol/vusb/main.c
+++ b/tmk_core/protocol/vusb/main.c
@@ -56,6 +56,7 @@ int main(void)
#ifndef NO_UART
uart_init(UART_BAUD_RATE);
#endif
+ keyboard_setup();
keyboard_init();
host_set_driver(vusb_driver());