summaryrefslogtreecommitdiff
path: root/app/include
diff options
context:
space:
mode:
Diffstat (limited to 'app/include')
-rw-r--r--app/include/drivers/behavior.h75
-rw-r--r--app/include/drivers/ext_power.h104
-rw-r--r--app/include/dt-bindings/zmk/bt.h21
-rw-r--r--app/include/dt-bindings/zmk/ext_power.h13
-rw-r--r--app/include/dt-bindings/zmk/keys.h11
-rw-r--r--app/include/dt-bindings/zmk/kscan-mock.h6
-rw-r--r--app/include/dt-bindings/zmk/matrix-transform.h5
-rw-r--r--app/include/dt-bindings/zmk/reset.h11
-rw-r--r--app/include/dt-bindings/zmk/rgb.h5
-rw-r--r--app/include/linker/zmk-events.ld2
-rw-r--r--app/include/zmk/behavior.h11
-rw-r--r--app/include/zmk/ble.h18
-rw-r--r--app/include/zmk/ble/profile.h16
-rw-r--r--app/include/zmk/display.h2
-rw-r--r--app/include/zmk/endpoints.h6
-rw-r--r--app/include/zmk/event-manager.h79
-rw-r--r--app/include/zmk/events/ble-active-profile-changed.h21
-rw-r--r--app/include/zmk/events/keycode-state-changed.h9
-rw-r--r--app/include/zmk/events/modifiers-state-changed.h10
-rw-r--r--app/include/zmk/events/position-state-changed.h3
-rw-r--r--app/include/zmk/events/sensor-event.h2
-rw-r--r--app/include/zmk/handlers.h6
-rw-r--r--app/include/zmk/hid.h18
-rw-r--r--app/include/zmk/hog.h5
-rw-r--r--app/include/zmk/keymap.h8
-rw-r--r--app/include/zmk/keys.h9
-rw-r--r--app/include/zmk/kscan.h6
-rw-r--r--app/include/zmk/matrix.h24
-rw-r--r--app/include/zmk/matrix_transform.h6
-rw-r--r--app/include/zmk/rgb_underglow.h2
-rw-r--r--app/include/zmk/sensors.h2
-rw-r--r--app/include/zmk/split/bluetooth/service.h6
-rw-r--r--app/include/zmk/split/bluetooth/uuid.h11
-rw-r--r--app/include/zmk/usb.h19
-rw-r--r--app/include/zmk/usb_hid.h14
35 files changed, 427 insertions, 139 deletions
diff --git a/app/include/drivers/behavior.h b/app/include/drivers/behavior.h
index c24d11b..cf259b1 100644
--- a/app/include/drivers/behavior.h
+++ b/app/include/drivers/behavior.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
@@ -10,6 +10,7 @@
#include <stddef.h>
#include <device.h>
#include <zmk/keys.h>
+#include <zmk/behavior.h>
/**
* @cond INTERNAL_HIDDEN
@@ -19,19 +20,20 @@
* (Internal use only.)
*/
-typedef int (*behavior_keymap_binding_callback_t)(struct device *dev, u32_t position, u32_t param1, u32_t param2);
-typedef int (*behavior_sensor_keymap_binding_callback_t)(struct device *dev, struct device *sensor, u32_t param1, u32_t param2);
+typedef int (*behavior_keymap_binding_callback_t)(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event);
+typedef int (*behavior_sensor_keymap_binding_callback_t)(struct zmk_behavior_binding *binding,
+ struct device *sensor);
__subsystem struct behavior_driver_api {
- behavior_keymap_binding_callback_t binding_pressed;
- behavior_keymap_binding_callback_t binding_released;
- behavior_sensor_keymap_binding_callback_t sensor_binding_triggered;
+ behavior_keymap_binding_callback_t binding_pressed;
+ behavior_keymap_binding_callback_t binding_released;
+ behavior_sensor_keymap_binding_callback_t sensor_binding_triggered;
};
/**
* @endcond
*/
-
/**
* @brief Handle the keymap binding being pressed
* @param dev Pointer to the device structure for the driver instance.
@@ -41,18 +43,19 @@ __subsystem struct behavior_driver_api {
* @retval 0 If successful.
* @retval Negative errno code if failure.
*/
-__syscall int behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, u32_t param2);
+__syscall int behavior_keymap_binding_pressed(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event);
-static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, u32_t param2)
-{
- const struct behavior_driver_api *api =
- (const struct behavior_driver_api *)dev->driver_api;
+static inline int z_impl_behavior_keymap_binding_pressed(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event) {
+ struct device *dev = device_get_binding(binding->behavior_dev);
+ const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api;
- if (api->binding_pressed == NULL) {
- return -ENOTSUP;
- }
+ if (api->binding_pressed == NULL) {
+ return -ENOTSUP;
+ }
- return api->binding_pressed(dev, position, param1, param2);
+ return api->binding_pressed(binding, event);
}
/**
@@ -63,18 +66,19 @@ static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32
* @retval 0 If successful.
* @retval Negative errno code if failure.
*/
-__syscall int behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, u32_t param2);
+__syscall int behavior_keymap_binding_released(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event);
-static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, u32_t param2)
-{
- const struct behavior_driver_api *api =
- (const struct behavior_driver_api *)dev->driver_api;
+static inline int z_impl_behavior_keymap_binding_released(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event) {
+ struct device *dev = device_get_binding(binding->behavior_dev);
+ const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api;
- if (api->binding_released == NULL) {
- return -ENOTSUP;
- }
+ if (api->binding_released == NULL) {
+ return -ENOTSUP;
+ }
- return api->binding_released(dev, position, param1, param2);
+ return api->binding_released(binding, event);
}
/**
@@ -87,21 +91,22 @@ static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u3
* @retval 0 If successful.
* @retval Negative errno code if failure.
*/
-__syscall int behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2);
+__syscall int behavior_sensor_keymap_binding_triggered(struct zmk_behavior_binding *binding,
+ struct device *sensor);
-static inline int z_impl_behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2)
-{
- const struct behavior_driver_api *api =
- (const struct behavior_driver_api *)dev->driver_api;
+static inline int
+z_impl_behavior_sensor_keymap_binding_triggered(struct zmk_behavior_binding *binding,
+ struct device *sensor) {
+ struct device *dev = device_get_binding(binding->behavior_dev);
+ const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api;
- if (api->sensor_binding_triggered == NULL) {
- return -ENOTSUP;
- }
+ if (api->sensor_binding_triggered == NULL) {
+ return -ENOTSUP;
+ }
- return api->sensor_binding_triggered(dev, sensor, param1, param2);
+ return api->sensor_binding_triggered(binding, sensor);
}
-
/**
* @}
*/
diff --git a/app/include/drivers/ext_power.h b/app/include/drivers/ext_power.h
new file mode 100644
index 0000000..6c1923e
--- /dev/null
+++ b/app/include/drivers/ext_power.h
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#pragma once
+
+#include <zephyr/types.h>
+#include <stddef.h>
+#include <device.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @cond INTERNAL_HIDDEN
+ *
+ * Behavior driver API definition and system call entry points.
+ *
+ * (Internal use only.)
+ */
+
+typedef int (*ext_power_enable_t)(struct device *dev);
+typedef int (*ext_power_disable_t)(struct device *dev);
+typedef int (*ext_power_get_t)(struct device *dev);
+
+__subsystem struct ext_power_api {
+ ext_power_enable_t enable;
+ ext_power_disable_t disable;
+ ext_power_get_t get;
+};
+/**
+ * @endcond
+ */
+
+/**
+ * @brief Enable the external power output
+ * @param dev Pointer to the device structure for the driver instance.
+ *
+ * @retval 0 If successful.
+ * @retval Negative errno code if failure.
+ */
+__syscall int ext_power_enable(struct device *dev);
+
+static inline int z_impl_ext_power_enable(struct device *dev) {
+ const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api;
+
+ if (api->enable == NULL) {
+ return -ENOTSUP;
+ }
+
+ return api->enable(dev);
+}
+
+/**
+ * @brief Disable the external power output
+ * @param dev Pointer to the device structure for the driver instance.
+ *
+ * @retval 0 If successful.
+ * @retval Negative errno code if failure.
+ */
+__syscall int ext_power_disable(struct device *dev);
+
+static inline int z_impl_ext_power_disable(struct device *dev) {
+ const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api;
+
+ if (api->disable == NULL) {
+ return -ENOTSUP;
+ }
+
+ return api->disable(dev);
+}
+
+/**
+ * @brief Get the current status of the external power output
+ * @param dev Pointer to the device structure for the driver instance.
+ *
+ * @retval 0 If ext power is disabled.
+ * @retval 1 if ext power is enabled.
+ * @retval Negative errno code if failure.
+ */
+__syscall int ext_power_get(struct device *dev);
+
+static inline int z_impl_ext_power_get(struct device *dev) {
+ const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api;
+
+ if (api->get == NULL) {
+ return -ENOTSUP;
+ }
+
+ return api->get(dev);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @}
+ */
+
+#include <syscalls/ext_power.h>
diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h
new file mode 100644
index 0000000..8ca1060
--- /dev/null
+++ b/app/include/dt-bindings/zmk/bt.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#define BT_CLR_CMD 0
+#define BT_NXT_CMD 1
+#define BT_PRV_CMD 2
+#define BT_SEL_CMD 3
+// #define BT_FULL_RESET_CMD 4
+
+/*
+Note: Some future commands will include additional parameters, so we
+defines these aliases up front.
+*/
+
+#define BT_CLR BT_CLR_CMD 0
+#define BT_NXT BT_NXT_CMD 0
+#define BT_PRV BT_PRV_CMD 0
+#define BT_SEL BT_SEL_CMD
diff --git a/app/include/dt-bindings/zmk/ext_power.h b/app/include/dt-bindings/zmk/ext_power.h
new file mode 100644
index 0000000..2a3e846
--- /dev/null
+++ b/app/include/dt-bindings/zmk/ext_power.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#define EXT_POWER_OFF_CMD 0
+#define EXT_POWER_ON_CMD 1
+#define EXT_POWER_TOGGLE_CMD 2
+
+#define EP_ON EXT_POWER_ON_CMD
+#define EP_OFF EXT_POWER_OFF_CMD
+#define EP_TOG EXT_POWER_TOGGLE_CMD
diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h
index cd9261d..a3b2229 100644
--- a/app/include/dt-bindings/zmk/keys.h
+++ b/app/include/dt-bindings/zmk/keys.h
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#pragma once
@@ -55,7 +60,7 @@
#define QUOT 0x34
#define GRAV 0x35
#define CMMA 0x36
-#define DOT 0x37
+#define DOT 0x37
#define FSLH 0x38
#define CLCK 0x39
#define F1 0x3A
@@ -77,8 +82,8 @@
#define INS 0x49
#define HOME 0x4A
#define PGUP 0x4B
-#define DEL 0x4C
-#define END 0x4D
+#define DEL 0x4C
+#define END 0x4D
#define PGDN 0x4E
#define RARW 0x4F
#define LARW 0x50
diff --git a/app/include/dt-bindings/zmk/kscan-mock.h b/app/include/dt-bindings/zmk/kscan-mock.h
index d481899..eff218b 100644
--- a/app/include/dt-bindings/zmk/kscan-mock.h
+++ b/app/include/dt-bindings/zmk/kscan-mock.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#define ZMK_MOCK_IS_PRESS(v) ((v & (0x01 << 31)) != 0)
diff --git a/app/include/dt-bindings/zmk/matrix-transform.h b/app/include/dt-bindings/zmk/matrix-transform.h
index 4fd3e6c..2989cb6 100644
--- a/app/include/dt-bindings/zmk/matrix-transform.h
+++ b/app/include/dt-bindings/zmk/matrix-transform.h
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#define KT_ROW(item) (item >> 8)
#define KT_COL(item) (item & 0xFF)
diff --git a/app/include/dt-bindings/zmk/reset.h b/app/include/dt-bindings/zmk/reset.h
index b513649..2b3d876 100644
--- a/app/include/dt-bindings/zmk/reset.h
+++ b/app/include/dt-bindings/zmk/reset.h
@@ -1,12 +1,13 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
-#define RST_WARM 0x00
-#define RST_COLD 0x01
+#define RST_WARM 0x00
+#define RST_COLD 0x01
-// AdaFruit nrf52 Bootloader Specific. See https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107
+// AdaFruit nrf52 Bootloader Specific. See
+// https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107
-#define RST_UF2 0x57 \ No newline at end of file
+#define RST_UF2 0x57 \ No newline at end of file
diff --git a/app/include/dt-bindings/zmk/rgb.h b/app/include/dt-bindings/zmk/rgb.h
index c2efda8..eb72180 100644
--- a/app/include/dt-bindings/zmk/rgb.h
+++ b/app/include/dt-bindings/zmk/rgb.h
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#define RGB_TOG 0
#define RGB_HUI 1
diff --git a/app/include/linker/zmk-events.ld b/app/include/linker/zmk-events.ld
index 44063be..78d00bb 100644
--- a/app/include/linker/zmk-events.ld
+++ b/app/include/linker/zmk-events.ld
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
diff --git a/app/include/zmk/behavior.h b/app/include/zmk/behavior.h
index 63edcc9..428ae24 100644
--- a/app/include/zmk/behavior.h
+++ b/app/include/zmk/behavior.h
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#pragma once
@@ -5,4 +10,10 @@ struct zmk_behavior_binding {
char *behavior_dev;
u32_t param1;
u32_t param2;
+};
+
+struct zmk_behavior_binding_event {
+ int layer;
+ u32_t position;
+ s64_t timestamp;
}; \ No newline at end of file
diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h
index e760ed7..1cf71a7 100644
--- a/app/include/zmk/ble.h
+++ b/app/include/zmk/ble.h
@@ -1,7 +1,25 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#pragma once
#include <zmk/keys.h>
+#include <zmk/ble/profile.h>
+
+int zmk_ble_clear_bonds();
+int zmk_ble_prof_next();
+int zmk_ble_prof_prev();
+int zmk_ble_prof_select(u8_t index);
+
+bt_addr_le_t *zmk_ble_active_profile_addr();
+char *zmk_ble_active_profile_name();
int zmk_ble_unpair_all();
bool zmk_ble_handle_key_user(struct zmk_key_event *key_event);
+
+#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL)
+void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr);
+#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ \ No newline at end of file
diff --git a/app/include/zmk/ble/profile.h b/app/include/zmk/ble/profile.h
new file mode 100644
index 0000000..1df2743
--- /dev/null
+++ b/app/include/zmk/ble/profile.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#pragma once
+
+#include <bluetooth/addr.h>
+
+#define ZMK_BLE_PROFILE_NAME_MAX 15
+
+struct zmk_ble_profile {
+ char name[ZMK_BLE_PROFILE_NAME_MAX];
+ bt_addr_le_t peer;
+};
diff --git a/app/include/zmk/display.h b/app/include/zmk/display.h
index 93ac3ff..def4392 100644
--- a/app/include/zmk/display.h
+++ b/app/include/zmk/display.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
diff --git a/app/include/zmk/endpoints.h b/app/include/zmk/endpoints.h
index 4c0f442..aad6265 100644
--- a/app/include/zmk/endpoints.h
+++ b/app/include/zmk/endpoints.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <zmk/keys.h>
diff --git a/app/include/zmk/event-manager.h b/app/include/zmk/event-manager.h
index d9a56a4..4b8f72c 100644
--- a/app/include/zmk/event-manager.h
+++ b/app/include/zmk/event-manager.h
@@ -1,22 +1,21 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
-
+
#pragma once
#include <stddef.h>
#include <kernel.h>
#include <zephyr/types.h>
-struct zmk_event_type
-{
+struct zmk_event_type {
const char *name;
};
struct zmk_event_header {
- const struct zmk_event_type* event;
+ const struct zmk_event_type *event;
u8_t last_listener_index;
};
@@ -24,8 +23,7 @@ struct zmk_event_header {
#define ZMK_EV_EVENT_CAPTURED 2
typedef int (*zmk_listener_callback_t)(const struct zmk_event_header *eh);
-struct zmk_listener
-{
+struct zmk_listener {
zmk_listener_callback_t callback;
};
@@ -34,55 +32,50 @@ struct zmk_event_subscription {
const struct zmk_listener *listener;
};
-#define ZMK_EVENT_DECLARE(event_type) \
- struct event_type* new_##event_type(); \
- bool is_##event_type(const struct zmk_event_header *eh); \
- struct event_type* cast_##event_type(const struct zmk_event_header *eh); \
+#define ZMK_EVENT_DECLARE(event_type) \
+ struct event_type *new_##event_type(); \
+ bool is_##event_type(const struct zmk_event_header *eh); \
+ struct event_type *cast_##event_type(const struct zmk_event_header *eh); \
extern const struct zmk_event_type zmk_event_##event_type;
-#define ZMK_EVENT_IMPL(event_type) \
- const struct zmk_event_type zmk_event_##event_type = { \
- .name = STRINGIFY(event_type) \
- }; \
- const struct zmk_event_type* zmk_event_ref_##event_type __used __attribute__((__section__(".event_type"))) = &zmk_event_##event_type; \
- struct event_type* new_##event_type() { \
- struct event_type* ev = (struct event_type *) k_malloc(sizeof(struct event_type)); \
- ev->header.event = &zmk_event_##event_type; \
- return ev; \
- }; \
- bool is_##event_type(const struct zmk_event_header *eh) { \
- return eh->event == &zmk_event_##event_type; \
- }; \
- struct event_type* cast_##event_type(const struct zmk_event_header *eh) {\
- return (struct event_type*)eh; \
+#define ZMK_EVENT_IMPL(event_type) \
+ const struct zmk_event_type zmk_event_##event_type = {.name = STRINGIFY(event_type)}; \
+ const struct zmk_event_type *zmk_event_ref_##event_type __used \
+ __attribute__((__section__(".event_type"))) = &zmk_event_##event_type; \
+ struct event_type *new_##event_type() { \
+ struct event_type *ev = (struct event_type *)k_malloc(sizeof(struct event_type)); \
+ ev->header.event = &zmk_event_##event_type; \
+ return ev; \
+ }; \
+ bool is_##event_type(const struct zmk_event_header *eh) { \
+ return eh->event == &zmk_event_##event_type; \
+ }; \
+ struct event_type *cast_##event_type(const struct zmk_event_header *eh) { \
+ return (struct event_type *)eh; \
};
-
-#define ZMK_LISTENER(mod, cb) \
- const struct zmk_listener zmk_listener_##mod = { \
- .callback = cb \
- };
+#define ZMK_LISTENER(mod, cb) const struct zmk_listener zmk_listener_##mod = {.callback = cb};
-#define ZMK_SUBSCRIPTION(mod, ev_type) \
- const Z_DECL_ALIGN(struct zmk_event_subscription) _CONCAT(_CONCAT(zmk_event_sub_,mod),ev_type) __used __attribute__((__section__(".event_subscription"))) = { \
- .event_type = &zmk_event_##ev_type, \
- .listener = &zmk_listener_##mod, \
+#define ZMK_SUBSCRIPTION(mod, ev_type) \
+ const Z_DECL_ALIGN(struct zmk_event_subscription) \
+ _CONCAT(_CONCAT(zmk_event_sub_, mod), ev_type) __used \
+ __attribute__((__section__(".event_subscription"))) = { \
+ .event_type = &zmk_event_##ev_type, \
+ .listener = &zmk_listener_##mod, \
};
-#define ZMK_EVENT_RAISE(ev) \
- zmk_event_manager_raise((struct zmk_event_header *)ev);
+#define ZMK_EVENT_RAISE(ev) zmk_event_manager_raise((struct zmk_event_header *)ev);
-#define ZMK_EVENT_RAISE_AFTER(ev, mod) \
+#define ZMK_EVENT_RAISE_AFTER(ev, mod) \
zmk_event_manager_raise_after((struct zmk_event_header *)ev, &zmk_listener_##mod);
-
-#define ZMK_EVENT_RAISE_AT(ev, mod) \
+#define ZMK_EVENT_RAISE_AT(ev, mod) \
zmk_event_manager_raise_at((struct zmk_event_header *)ev, &zmk_listener_##mod);
-#define ZMK_EVENT_RELEASE(ev) \
- zmk_event_manager_release((struct zmk_event_header *)ev);
+#define ZMK_EVENT_RELEASE(ev) zmk_event_manager_release((struct zmk_event_header *)ev);
int zmk_event_manager_raise(struct zmk_event_header *event);
-int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct zmk_listener *listener);
+int zmk_event_manager_raise_after(struct zmk_event_header *event,
+ const struct zmk_listener *listener);
int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener);
int zmk_event_manager_release(struct zmk_event_header *event);
diff --git a/app/include/zmk/events/ble-active-profile-changed.h b/app/include/zmk/events/ble-active-profile-changed.h
new file mode 100644
index 0000000..1e3a198
--- /dev/null
+++ b/app/include/zmk/events/ble-active-profile-changed.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#pragma once
+
+#include <zephyr.h>
+#include <zmk/event-manager.h>
+#include <device.h>
+
+#include <zmk/ble/profile.h>
+
+struct ble_active_profile_changed {
+ struct zmk_event_header header;
+ u8_t index;
+ struct zmk_ble_profile *profile;
+};
+
+ZMK_EVENT_DECLARE(ble_active_profile_changed);
diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h
index e12813c..1e2c24e 100644
--- a/app/include/zmk/events/keycode-state-changed.h
+++ b/app/include/zmk/events/keycode-state-changed.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
@@ -18,12 +18,11 @@ struct keycode_state_changed {
ZMK_EVENT_DECLARE(keycode_state_changed);
-inline struct keycode_state_changed* create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state)
-{
- struct keycode_state_changed* ev = new_keycode_state_changed();
+inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode,
+ bool state) {
+ struct keycode_state_changed *ev = new_keycode_state_changed();
ev->usage_page = usage_page;
ev->keycode = keycode;
ev->state = state;
-
return ev;
} \ No newline at end of file
diff --git a/app/include/zmk/events/modifiers-state-changed.h b/app/include/zmk/events/modifiers-state-changed.h
index a17a093..d2e02f8 100644
--- a/app/include/zmk/events/modifiers-state-changed.h
+++ b/app/include/zmk/events/modifiers-state-changed.h
@@ -1,9 +1,9 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
-
+
#pragma once
#include <zephyr.h>
@@ -18,9 +18,9 @@ struct modifiers_state_changed {
ZMK_EVENT_DECLARE(modifiers_state_changed);
-inline struct modifiers_state_changed* create_modifiers_state_changed(zmk_mod_flags modifiers, bool state)
-{
- struct modifiers_state_changed* ev = new_modifiers_state_changed();
+inline struct modifiers_state_changed *create_modifiers_state_changed(zmk_mod_flags modifiers,
+ bool state) {
+ struct modifiers_state_changed *ev = new_modifiers_state_changed();
ev->modifiers = modifiers;
ev->state = state;
diff --git a/app/include/zmk/events/position-state-changed.h b/app/include/zmk/events/position-state-changed.h
index c91688e..e4cbbbe 100644
--- a/app/include/zmk/events/position-state-changed.h
+++ b/app/include/zmk/events/position-state-changed.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
@@ -13,6 +13,7 @@ struct position_state_changed {
struct zmk_event_header header;
u32_t position;
bool state;
+ s64_t timestamp;
};
ZMK_EVENT_DECLARE(position_state_changed); \ No newline at end of file
diff --git a/app/include/zmk/events/sensor-event.h b/app/include/zmk/events/sensor-event.h
index f881ac5..a9302a5 100644
--- a/app/include/zmk/events/sensor-event.h
+++ b/app/include/zmk/events/sensor-event.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
diff --git a/app/include/zmk/handlers.h b/app/include/zmk/handlers.h
index a10851f..7ce1d27 100644
--- a/app/include/zmk/handlers.h
+++ b/app/include/zmk/handlers.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <dt-bindings/zmk/keys.h>
diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h
index 138606a..744de98 100644
--- a/app/include/zmk/hid.h
+++ b/app/include/zmk/hid.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <usb/usb_device.h>
@@ -134,25 +140,21 @@ static const u8_t zmk_hid_report_desc[] = {
// u8_t keys[6];
// } __packed;
-struct zmk_hid_keypad_report_body
-{
+struct zmk_hid_keypad_report_body {
zmk_mod_flags modifiers;
u8_t keys[13];
} __packed;
-struct zmk_hid_keypad_report
-{
+struct zmk_hid_keypad_report {
u8_t report_id;
struct zmk_hid_keypad_report_body body;
} __packed;
-struct zmk_hid_consumer_report_body
-{
+struct zmk_hid_consumer_report_body {
u8_t keys[6];
} __packed;
-struct zmk_hid_consumer_report
-{
+struct zmk_hid_consumer_report {
u8_t report_id;
struct zmk_hid_consumer_report_body body;
} __packed;
diff --git a/app/include/zmk/hog.h b/app/include/zmk/hog.h
index e2f976a..a7dda51 100644
--- a/app/include/zmk/hog.h
+++ b/app/include/zmk/hog.h
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
#pragma once
diff --git a/app/include/zmk/keymap.h b/app/include/zmk/keymap.h
index c1f6393..b8f4969 100644
--- a/app/include/zmk/keymap.h
+++ b/app/include/zmk/keymap.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
bool zmk_keymap_layer_active(u8_t layer);
@@ -5,4 +11,4 @@ int zmk_keymap_layer_activate(u8_t layer);
int zmk_keymap_layer_deactivate(u8_t layer);
int zmk_keymap_layer_toggle(u8_t layer);
-int zmk_keymap_position_state_changed(u32_t position, bool pressed);
+int zmk_keymap_position_state_changed(u32_t position, bool pressed, s64_t timestamp);
diff --git a/app/include/zmk/keys.h b/app/include/zmk/keys.h
index 6966bba..af474b1 100644
--- a/app/include/zmk/keys.h
+++ b/app/include/zmk/keys.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <zephyr.h>
@@ -8,8 +14,7 @@ typedef u8_t zmk_action;
typedef u8_t zmk_mod;
typedef u8_t zmk_mod_flags;
-struct zmk_key_event
-{
+struct zmk_key_event {
u32_t column;
u32_t row;
zmk_key key;
diff --git a/app/include/zmk/kscan.h b/app/include/zmk/kscan.h
index ebffccd..3352600 100644
--- a/app/include/zmk/kscan.h
+++ b/app/include/zmk/kscan.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
int zmk_kscan_init(char *name);
diff --git a/app/include/zmk/matrix.h b/app/include/zmk/matrix.h
index 3088263..b3e2323 100644
--- a/app/include/zmk/matrix.h
+++ b/app/include/zmk/matrix.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <devicetree.h>
@@ -9,20 +15,20 @@
#define ZMK_KEYMAP_TRANSFORM_NODE DT_CHOSEN(zmk_matrix_transform)
#define ZMK_KEYMAP_LEN DT_PROP_LEN(ZMK_KEYMAP_TRANSFORM_NODE, map)
-#define ZMK_MATRIX_ROWS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE,rows)
-#define ZMK_MATRIX_COLS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE,columns)
+#define ZMK_MATRIX_ROWS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE, rows)
+#define ZMK_MATRIX_COLS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE, columns)
#else /* DT_HAS_CHOSEN(zmk_matrix_transform) */
-#if DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID,row_gpios)
-#define ZMK_MATRIX_ROWS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,row_gpios)
-#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,col_gpios)
-#elif DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID,input_gpios)
+#if DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID, row_gpios)
+#define ZMK_MATRIX_ROWS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, row_gpios)
+#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, col_gpios)
+#elif DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID, input_gpios)
#define ZMK_MATRIX_ROWS 1
-#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,input_gpios)
+#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, input_gpios)
#else
-#define ZMK_MATRIX_ROWS DT_PROP(ZMK_MATRIX_NODE_ID,rows)
-#define ZMK_MATRIX_COLS DT_PROP(ZMK_MATRIX_NODE_ID,columns)
+#define ZMK_MATRIX_ROWS DT_PROP(ZMK_MATRIX_NODE_ID, rows)
+#define ZMK_MATRIX_COLS DT_PROP(ZMK_MATRIX_NODE_ID, columns)
#endif
#define ZMK_KEYMAP_LEN (ZMK_MATRIX_COLS * ZMK_MATRIX_ROWS)
diff --git a/app/include/zmk/matrix_transform.h b/app/include/zmk/matrix_transform.h
index e9e969a..29c2afc 100644
--- a/app/include/zmk/matrix_transform.h
+++ b/app/include/zmk/matrix_transform.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
u32_t zmk_matrix_transform_row_column_to_position(u32_t row, u32_t column); \ No newline at end of file
diff --git a/app/include/zmk/rgb_underglow.h b/app/include/zmk/rgb_underglow.h
index 69e9a9b..94cc32c 100644
--- a/app/include/zmk/rgb_underglow.h
+++ b/app/include/zmk/rgb_underglow.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Nick Winans <nick@winans.codes>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
diff --git a/app/include/zmk/sensors.h b/app/include/zmk/sensors.h
index c60cd4b..63dcade 100644
--- a/app/include/zmk/sensors.h
+++ b/app/include/zmk/sensors.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
diff --git a/app/include/zmk/split/bluetooth/service.h b/app/include/zmk/split/bluetooth/service.h
index 954e0cd..c2be512 100644
--- a/app/include/zmk/split/bluetooth/service.h
+++ b/app/include/zmk/split/bluetooth/service.h
@@ -1,3 +1,9 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
int zmk_split_bt_position_pressed(u8_t position);
diff --git a/app/include/zmk/split/bluetooth/uuid.h b/app/include/zmk/split/bluetooth/uuid.h
index 59f2f71..a31884d 100644
--- a/app/include/zmk/split/bluetooth/uuid.h
+++ b/app/include/zmk/split/bluetooth/uuid.h
@@ -1,12 +1,17 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
#pragma once
#include <bluetooth/uuid.h>
#ifndef BT_UUID_NUM_OF_DIGITALS
-#define BT_UUID_NUM_OF_DIGITALS BT_UUID_DECLARE_16(0x2909)
+#define BT_UUID_NUM_OF_DIGITALS BT_UUID_DECLARE_16(0x2909)
#endif
-#define ZMK_BT_SPLIT_UUID(num) BT_UUID_128_ENCODE(num, 0x0096, 0x7107, 0xc967, 0xc5cfb1c2482a)
+#define ZMK_BT_SPLIT_UUID(num) BT_UUID_128_ENCODE(num, 0x0096, 0x7107, 0xc967, 0xc5cfb1c2482a)
#define ZMK_SPLIT_BT_SERVICE_UUID ZMK_BT_SPLIT_UUID(0x00000000)
#define ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID ZMK_BT_SPLIT_UUID(0x00000001)
-
diff --git a/app/include/zmk/usb.h b/app/include/zmk/usb.h
new file mode 100644
index 0000000..452fd54
--- /dev/null
+++ b/app/include/zmk/usb.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#pragma once
+
+#include <usb/usb_device.h>
+#include <usb/class/usb_hid.h>
+
+#include <zmk/keys.h>
+#include <zmk/hid.h>
+
+enum usb_dc_status_code zmk_usb_get_status();
+
+#ifdef CONFIG_ZMK_USB
+int zmk_usb_hid_send_report(u8_t *report, size_t len);
+#endif /* CONFIG_ZMK_USB */ \ No newline at end of file
diff --git a/app/include/zmk/usb_hid.h b/app/include/zmk/usb_hid.h
deleted file mode 100644
index 5d7c744..0000000
--- a/app/include/zmk/usb_hid.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef ZMK_USB_HID
-#define ZMK_USB_HID
-
-#include <usb/usb_device.h>
-#include <usb/class/usb_hid.h>
-
-#include <zmk/keys.h>
-#include <zmk/hid.h>
-
-int zmk_usb_hid_init();
-
-int zmk_usb_hid_send_report(u8_t *report, size_t len);
-
-#endif