diff options
| author | Drashna Jaelre <drashna@live.com> | 2019-02-14 20:18:54 -0800 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-02-14 20:18:54 -0800 |
| commit | cc5c6b449a4a36fc56fa5896b2b8f120e4bb0b31 (patch) | |
| tree | 395f57bdc4ed5384424bbc7c8d483cbee6253f63 /tmk_core | |
| parent | 40e67a3074293bc8e96574e7d603a943d3ca8d38 (diff) | |
| download | qmk_firmware-cc5c6b449a4a36fc56fa5896b2b8f120e4bb0b31.tar.gz qmk_firmware-cc5c6b449a4a36fc56fa5896b2b8f120e4bb0b31.zip | |
Add kb and user level keyboard initialization functions (#3113)
* Add suspend functions
* Disable RGB code if it's disabled
* Add keyboard_init functions
* Change where references so it will compile
* Wrong command chained in wake up kb function
* Fix non-feature file changes
* Add documentation
* Re-add matrix init docs
* add rgblight code to example
* Remove suspend code
* Clean up docs
* Fix docs
* Fix suspend code
* more doc fixes
* change function to startup_* rather than keyboard_init_
* fix spelling error
* fix up docs to finish removing keyboard_init
* Use Pre and Post init functions
* Update Documenation
* Remove changes to my keymap and userspace code
* Cleanup
* Revert changes to extra files
* Forgot a semicolon
* Make sure all protocols call keyboard_setup
* Cleanup functions
* Unset startup_user
* Remove changes from division keyboard
* Readd startup_user function
* Remove all to startup_user
* Update docs/custom_quantum_functions.md
Co-Authored-By: drashna <drashna@live.com>
* Update docs/custom_quantum_functions.md
Co-Authored-By: drashna <drashna@live.com>
* Add suggestion line
* Rebase fixes
* Update documentation to be more useful/accurate
* Cleanup of documentation
* Fix spacing inconsistency
* Revert unexpected change to keymap
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/common/avr/suspend.c | 28 | ||||
| -rw-r--r-- | tmk_core/common/keyboard.c | 36 | ||||
| -rw-r--r-- | tmk_core/common/keyboard.h | 5 | ||||
| -rw-r--r-- | tmk_core/protocol/bluefruit/main.c | 15 | ||||
| -rw-r--r-- | tmk_core/protocol/chibios/main.c | 2 | ||||
| -rw-r--r-- | tmk_core/protocol/vusb/main.c | 1 |
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) { | |||
| 142 | #endif | 142 | #endif |
| 143 | suspend_power_down_kb(); | 143 | suspend_power_down_kb(); |
| 144 | 144 | ||
| 145 | // TODO: more power saving | 145 | // TODO: more power saving |
| 146 | // See PicoPower application note | 146 | // See PicoPower application note |
| 147 | // - I/O port input with pullup | 147 | // - I/O port input with pullup |
| 148 | // - prescale clock | 148 | // - prescale clock |
| 149 | // - BOD disable | 149 | // - BOD disable |
| 150 | // - Power Reduction Register PRR | 150 | // - Power Reduction Register PRR |
| 151 | set_sleep_mode(SLEEP_MODE_PWR_DOWN); | 151 | set_sleep_mode(SLEEP_MODE_PWR_DOWN); |
| 152 | sleep_enable(); | 152 | sleep_enable(); |
| 153 | sei(); | 153 | sei(); |
| 154 | sleep_cpu(); | 154 | sleep_cpu(); |
| 155 | sleep_disable(); | 155 | sleep_disable(); |
| 156 | 156 | ||
| 157 | // Disable watchdog after sleep | 157 | // Disable watchdog after sleep |
| 158 | wdt_disable(); | 158 | wdt_disable(); |
| 159 | } | 159 | } |
| 160 | #endif | 160 | #endif |
| 161 | 161 | ||
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)) | |||
| 139 | void matrix_setup(void) { | 139 | void matrix_setup(void) { |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | /** \brief keyboard_pre_init_user | ||
| 143 | * | ||
| 144 | * FIXME: needs doc | ||
| 145 | */ | ||
| 146 | __attribute__ ((weak)) | ||
| 147 | void keyboard_pre_init_user(void) { } | ||
| 148 | |||
| 149 | /** \brief keyboard_pre_init_kb | ||
| 150 | * | ||
| 151 | * FIXME: needs doc | ||
| 152 | */ | ||
| 153 | __attribute__ ((weak)) | ||
| 154 | void keyboard_pre_init_kb(void) { | ||
| 155 | keyboard_pre_init_user(); | ||
| 156 | } | ||
| 157 | |||
| 158 | /** \brief keyboard_post_init_user | ||
| 159 | * | ||
| 160 | * FIXME: needs doc | ||
| 161 | */ | ||
| 162 | |||
| 163 | __attribute__ ((weak)) | ||
| 164 | void keyboard_post_init_user() {} | ||
| 165 | |||
| 166 | /** \brief keyboard_post_init_kb | ||
| 167 | * | ||
| 168 | * FIXME: needs doc | ||
| 169 | */ | ||
| 170 | |||
| 171 | __attribute__ ((weak)) | ||
| 172 | void keyboard_post_init_kb(void) { | ||
| 173 | keyboard_post_init_user(); | ||
| 174 | } | ||
| 175 | |||
| 142 | /** \brief keyboard_setup | 176 | /** \brief keyboard_setup |
| 143 | * | 177 | * |
| 144 | * FIXME: needs doc | 178 | * FIXME: needs doc |
| @@ -146,6 +180,7 @@ void matrix_setup(void) { | |||
| 146 | void keyboard_setup(void) { | 180 | void keyboard_setup(void) { |
| 147 | disable_jtag(); | 181 | disable_jtag(); |
| 148 | matrix_setup(); | 182 | matrix_setup(); |
| 183 | keyboard_pre_init_kb(); | ||
| 149 | } | 184 | } |
| 150 | 185 | ||
| 151 | /** \brief is_keyboard_master | 186 | /** \brief is_keyboard_master |
| @@ -199,6 +234,7 @@ void keyboard_init(void) { | |||
| 199 | #if defined(NKRO_ENABLE) && defined(FORCE_NKRO) | 234 | #if defined(NKRO_ENABLE) && defined(FORCE_NKRO) |
| 200 | keymap_config.nkro = 1; | 235 | keymap_config.nkro = 1; |
| 201 | #endif | 236 | #endif |
| 237 | keyboard_post_init_kb(); /* Always keep this last */ | ||
| 202 | } | 238 | } |
| 203 | 239 | ||
| 204 | /** \brief Keyboard task: Do keyboard routine jobs | 240 | /** \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); | |||
| 70 | /* it runs whenever code has to behave differently on a slave */ | 70 | /* it runs whenever code has to behave differently on a slave */ |
| 71 | bool is_keyboard_master(void); | 71 | bool is_keyboard_master(void); |
| 72 | 72 | ||
| 73 | void keyboard_pre_init_kb(void); | ||
| 74 | void keyboard_pre_init_user(void); | ||
| 75 | void keyboard_post_init_kb(void); | ||
| 76 | void keyboard_post_init_user(void); | ||
| 77 | |||
| 73 | #ifdef __cplusplus | 78 | #ifdef __cplusplus |
| 74 | } | 79 | } |
| 75 | #endif | 80 | #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/>. | |||
| 42 | 42 | ||
| 43 | 43 | ||
| 44 | int main(void) | 44 | int main(void) |
| 45 | { | 45 | { |
| 46 | 46 | ||
| 47 | CPU_PRESCALE(0); | 47 | CPU_PRESCALE(0); |
| 48 | 48 | ||
| 49 | // DDRD = _BV(PD5); | 49 | // DDRD = _BV(PD5); |
| 50 | // DDRB = _BV(PB0); | 50 | // DDRB = _BV(PB0); |
| 51 | 51 | ||
| 52 | // PORTD = _BV(PD5); | 52 | // PORTD = _BV(PD5); |
| 53 | // PORTB = _BV(PB0); | 53 | // PORTB = _BV(PB0); |
| 54 | 54 | ||
| @@ -59,22 +59,23 @@ int main(void) | |||
| 59 | // while (!usb_configured()) /* wait */ | 59 | // while (!usb_configured()) /* wait */ |
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | keyboard_setup(); | ||
| 62 | 63 | ||
| 63 | dprintf("Initializing keyboard...\n"); | 64 | dprintf("Initializing keyboard...\n"); |
| 64 | keyboard_init(); | 65 | keyboard_init(); |
| 65 | 66 | ||
| 66 | // This implementation is pretty simplistic... if the USB connection | 67 | // This implementation is pretty simplistic... if the USB connection |
| 67 | // is not configured, choose the Bluefruit, otherwise use USB | 68 | // is not configured, choose the Bluefruit, otherwise use USB |
| 68 | // Definitely would prefer to have this driven by an input pin and make | 69 | // Definitely would prefer to have this driven by an input pin and make |
| 69 | // it switch dynamically - BCG | 70 | // it switch dynamically - BCG |
| 70 | // if (!usb_configured()) { | 71 | // if (!usb_configured()) { |
| 71 | 72 | ||
| 72 | // // Send power to Bluefruit... Adafruit says it takes 27 mA, I think | 73 | // // Send power to Bluefruit... Adafruit says it takes 27 mA, I think |
| 73 | // // the pins should provide 40 mA, but just in case I switch the | 74 | // // the pins should provide 40 mA, but just in case I switch the |
| 74 | // // Bluefruit using a transistor - BCG | 75 | // // Bluefruit using a transistor - BCG |
| 75 | // DDRB = _BV(PB6); | 76 | // DDRB = _BV(PB6); |
| 76 | // PORTB |= _BV(PB6); | 77 | // PORTB |= _BV(PB6); |
| 77 | 78 | ||
| 78 | dprintf("Setting host driver to bluefruit...\n"); | 79 | dprintf("Setting host driver to bluefruit...\n"); |
| 79 | host_set_driver(bluefruit_driver()); | 80 | host_set_driver(bluefruit_driver()); |
| 80 | 81 | ||
| @@ -131,7 +132,7 @@ int main(void) | |||
| 131 | // usb_remote_wakeup(); | 132 | // usb_remote_wakeup(); |
| 132 | // } | 133 | // } |
| 133 | // } | 134 | // } |
| 134 | // keyboard_task(); | 135 | // keyboard_task(); |
| 135 | // } | 136 | // } |
| 136 | // } | 137 | // } |
| 137 | 138 | ||
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) { | |||
| 119 | // TESTING | 119 | // TESTING |
| 120 | // chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); | 120 | // chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); |
| 121 | 121 | ||
| 122 | keyboard_setup(); | ||
| 123 | |||
| 122 | /* Init USB */ | 124 | /* Init USB */ |
| 123 | init_usb_driver(&USB_DRIVER); | 125 | init_usb_driver(&USB_DRIVER); |
| 124 | 126 | ||
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) | |||
| 56 | #ifndef NO_UART | 56 | #ifndef NO_UART |
| 57 | uart_init(UART_BAUD_RATE); | 57 | uart_init(UART_BAUD_RATE); |
| 58 | #endif | 58 | #endif |
| 59 | keyboard_setup(); | ||
| 59 | 60 | ||
| 60 | keyboard_init(); | 61 | keyboard_init(); |
| 61 | host_set_driver(vusb_driver()); | 62 | host_set_driver(vusb_driver()); |
