Add keyboard_setup() and matrix_setup()
authortmk <hasu@tmk-kbd.com>
Sun, 17 May 2015 10:34:34 +0000 (19:34 +0900)
committertmk <hasu@tmk-kbd.com>
Mon, 18 May 2015 15:39:43 +0000 (00:39 +0900)
tmk_core/common/avr/suspend.c
tmk_core/common/keyboard.c
tmk_core/common/keyboard.h
tmk_core/common/matrix.h
tmk_core/protocol/lufa/lufa.c
tmk_core/protocol/pjrc/main.c

index 80243f02bc7448d8a6880afad9718bdff11af4fd..af99f52b5ee18336f4f332eddf5c37bd9ab5b108 100644 (file)
@@ -85,6 +85,8 @@ void suspend_power_down(void)
     power_down(WDTO_15MS);
 }
 
+__attribute__ ((weak)) void matrix_power_up(void) {}
+__attribute__ ((weak)) void matrix_power_down(void) {}
 bool suspend_wakeup_condition(void)
 {
     matrix_power_up();
index b03b124d76a98af7bc41e32aa4a09b055c8bf392..eb7b096bed501e32b65702c98f9da27c3e912791 100644 (file)
@@ -62,6 +62,12 @@ static bool has_ghost_in_row(uint8_t row)
 #endif
 
 
+__attribute__ ((weak)) void matrix_setup(void) {}
+void keyboard_setup(void)
+{
+    matrix_setup();
+}
+
 void keyboard_init(void)
 {
     timer_init();
index 6442716fc754115037e3a03a833cf28b5588fb0b..7738251b646c08fddfe2bab69a97266058c6d631 100644 (file)
@@ -58,13 +58,15 @@ static inline bool IS_RELEASED(keyevent_t event) { return (!IS_NOEVENT(event) &&
 }
 
 
+/* it runs once at early stage of startup before keyboard_init. */
+void keyboard_setup(void);
+/* it runs once after initializing host side protocol, debug and MCU peripherals. */
 void keyboard_init(void);
+/* it runs repeatedly in main loop */
 void keyboard_task(void);
+/* it runs when host LED status is updated */
 void keyboard_set_leds(uint8_t leds);
 
-__attribute__ ((weak)) void matrix_power_up(void) {}
-__attribute__ ((weak)) void matrix_power_down(void) {}
-
 #ifdef __cplusplus
 }
 #endif
index 107ee72653894a4b4fbf35b7f0110c8fb91d72f9..ec6f8cd431895d19c957d4b28c069779eae5f05b 100644 (file)
@@ -43,7 +43,9 @@ extern "C" {
 uint8_t matrix_rows(void);
 /* number of matrix columns */
 uint8_t matrix_cols(void);
-/* intialize matrix for scaning. should be called once. */
+/* should be called at early stage of startup before matrix_init.(optional) */
+void matrix_setup(void);
+/* intialize matrix for scaning. */
 void matrix_init(void);
 /* scan all key states on matrix */
 uint8_t matrix_scan(void);
index cdfc7bc6ad990bfd5a0031cb71dec93bbf99067c..391064c9b29db008dbc59d0f02d699af9bf8b1cf 100644 (file)
@@ -544,7 +544,7 @@ int8_t sendchar(uint8_t c)
 /*******************************************************************************
  * main
  ******************************************************************************/
-static void SetupHardware(void)
+static void setup_mcu(void)
 {
     /* Disable watchdog if enabled by bootloader/fuses */
     MCUSR &= ~(1 << WDRF);
@@ -552,7 +552,10 @@ static void SetupHardware(void)
 
     /* Disable clock division */
     clock_prescale_set(clock_div_1);
+}
 
+static void setup_usb(void)
+{
     // Leonardo needs. Without this USB device is not recognized.
     USB_Disable();
 
@@ -566,7 +569,9 @@ static void SetupHardware(void)
 int main(void)  __attribute__ ((weak));
 int main(void)
 {
-    SetupHardware();
+    setup_mcu();
+    keyboard_setup();
+    setup_usb();
     sei();
 
     /* wait for USB startup & debug output */
index e7bdcc059a7181788c4ccfc599e9008156d58c48..45eb17d4cddc625a8abd1bd8246eee340b093b3f 100644 (file)
@@ -46,6 +46,8 @@ int main(void)
     // set for 16 MHz clock
     CPU_PRESCALE(0);
 
+    keyboard_setup();
+
     // Initialize the USB, and then wait for the host to set configuration.
     // If the Teensy is powered without a PC connected to the USB port,
     // this will wait forever.
Imprint / Impressum