From 7c5fb7adb5a505ab5f89754370567b2357aa322a Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 7 Jul 2020 10:20:23 -0400 Subject: [PATCH] Use SYS_INIT for BLE and USB init. --- app/Kconfig | 14 +++++++++++++- app/include/zmk/endpoints.h | 1 - app/src/ble.c | 9 ++++++++- app/src/endpoints.c | 28 ---------------------------- app/src/hog.c | 5 ----- app/src/main.c | 5 ----- app/src/usb_hid.c | 7 ++++++- 7 files changed, 27 insertions(+), 42 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index 45481b15..23f7945e 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -15,12 +15,20 @@ config ZMK_KSCAN_EVENT_QUEUE_SIZE menu "HID Output Types" -config ZMK_USB +menuconfig ZMK_USB bool "USB" select USB select USB_DEVICE_STACK select USB_DEVICE_HID +if ZMK_USB + +config ZMK_USB_INIT_PRIORITY + int "Init Priority" + default 50 + +endif + menuconfig ZMK_BLE bool "BLE (HID over GATT)" select BT @@ -32,6 +40,10 @@ menuconfig ZMK_BLE if ZMK_BLE +config ZMK_BLE_INIT_PRIORITY + int "Init Priority" + default 50 + # HID GATT notifications sent this way are *not* picked up by Linux, and possibly others. config BT_GATT_NOTIFY_MULTIPLE default n diff --git a/app/include/zmk/endpoints.h b/app/include/zmk/endpoints.h index 624bb4e8..4c0f4425 100644 --- a/app/include/zmk/endpoints.h +++ b/app/include/zmk/endpoints.h @@ -3,5 +3,4 @@ #include #include -int zmk_endpoints_init(); int zmk_endpoints_send_report(u8_t usage_report); diff --git a/app/src/ble.c b/app/src/ble.c index 0e6c5f29..c0e81a96 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -1,4 +1,7 @@ +#include +#include + #include #include @@ -139,7 +142,7 @@ static void zmk_ble_ready(int err) } } -int zmk_ble_init() +static int zmk_ble_init(struct device *_arg) { if (IS_ENABLED(CONFIG_SETTINGS)) { @@ -191,3 +194,7 @@ bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) return false; } + +SYS_INIT(zmk_ble_init, + APPLICATION, + CONFIG_ZMK_BLE_INIT_PRIORITY); diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 7823e954..48dc2ec2 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -8,34 +8,6 @@ #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -int zmk_endpoints_init() -{ - int err; - - LOG_DBG(""); - -#ifdef CONFIG_ZMK_USB - err = zmk_usb_hid_init(); - if (err) - { - LOG_ERR("USB HID Init Failed\n"); - return err; - } -#endif /* CONFIG_ZMK_USB */ - -#ifdef CONFIG_ZMK_BLE - err = zmk_hog_init(); - if (err) - { - LOG_ERR("HOG Init Failed\n"); - return err; - } - -#endif /* CONFIG_ZMK_BLE */ - - return 0; -} - int zmk_endpoints_send_report(u8_t usage_page) { int err; diff --git a/app/src/hog.c b/app/src/hog.c index 087af423..589c28ff 100644 --- a/app/src/hog.c +++ b/app/src/hog.c @@ -7,11 +7,6 @@ #include #include -int zmk_hog_init() -{ - return zmk_ble_init(); -} - enum { HIDS_REMOTE_WAKE = BIT(0), diff --git a/app/src/main.c b/app/src/main.c index 1ced310d..92ecc8b1 100644 --- a/app/src/main.c +++ b/app/src/main.c @@ -27,11 +27,6 @@ void main(void) return; } - if (zmk_endpoints_init()) - { - printk("ENDPOINT INIT FAILED\n"); - return; - } #ifdef CONFIG_SETTINGS settings_load(); diff --git a/app/src/usb_hid.c b/app/src/usb_hid.c index 2862d566..4c6dd4b2 100644 --- a/app/src/usb_hid.c +++ b/app/src/usb_hid.c @@ -1,5 +1,6 @@ #include +#include #include #include @@ -29,7 +30,7 @@ void usb_hid_status_cb(enum usb_dc_status_code status, const u8_t *params) usb_status = status; }; -int zmk_usb_hid_init() +static int zmk_usb_hid_init(struct device *_arg) { int usb_enable_ret; @@ -56,3 +57,7 @@ int zmk_usb_hid_init() return 0; } + +SYS_INIT(zmk_usb_hid_init, + APPLICATION, + CONFIG_ZMK_USB_INIT_PRIORITY);