Use SYS_INIT for BLE and USB init.

This commit is contained in:
Pete Johanson 2020-07-07 10:20:23 -04:00
parent 48f3f86a83
commit 7c5fb7adb5
7 changed files with 27 additions and 42 deletions

View file

@ -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

View file

@ -3,5 +3,4 @@
#include <zmk/keys.h>
#include <zmk/hid.h>
int zmk_endpoints_init();
int zmk_endpoints_send_report(u8_t usage_report);

View file

@ -1,4 +1,7 @@
#include <device.h>
#include <init.h>
#include <math.h>
#include <settings/settings.h>
@ -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);

View file

@ -8,34 +8,6 @@
#include <logging/log.h>
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;

View file

@ -7,11 +7,6 @@
#include <zmk/hog.h>
#include <zmk/hid.h>
int zmk_hog_init()
{
return zmk_ble_init();
}
enum
{
HIDS_REMOTE_WAKE = BIT(0),

View file

@ -27,11 +27,6 @@ void main(void)
return;
}
if (zmk_endpoints_init())
{
printk("ENDPOINT INIT FAILED\n");
return;
}
#ifdef CONFIG_SETTINGS
settings_load();

View file

@ -1,5 +1,6 @@
#include <device.h>
#include <init.h>
#include <usb/usb_device.h>
#include <usb/class/usb_hid.h>
@ -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);