aboutsummaryrefslogtreecommitdiff
path: root/tmk_core
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-02-14 20:18:54 -0800
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-02-14 20:18:54 -0800
commitcc5c6b449a4a36fc56fa5896b2b8f120e4bb0b31 (patch)
tree395f57bdc4ed5384424bbc7c8d483cbee6253f63 /tmk_core
parent40e67a3074293bc8e96574e7d603a943d3ca8d38 (diff)
downloadqmk_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.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) {
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))
139void matrix_setup(void) { 139void matrix_setup(void) {
140} 140}
141 141
142/** \brief keyboard_pre_init_user
143 *
144 * FIXME: needs doc
145 */
146__attribute__ ((weak))
147void keyboard_pre_init_user(void) { }
148
149/** \brief keyboard_pre_init_kb
150 *
151 * FIXME: needs doc
152 */
153__attribute__ ((weak))
154void 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))
164void keyboard_post_init_user() {}
165
166/** \brief keyboard_post_init_kb
167 *
168 * FIXME: needs doc
169 */
170
171__attribute__ ((weak))
172void 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) {
146void keyboard_setup(void) { 180void 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 */
71bool is_keyboard_master(void); 71bool is_keyboard_master(void);
72 72
73void keyboard_pre_init_kb(void);
74void keyboard_pre_init_user(void);
75void keyboard_post_init_kb(void);
76void 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
44int main(void) 44int 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());