diff options
Diffstat (limited to 'app/include/zmk')
-rw-r--r-- | app/include/zmk/event_manager.h | 49 | ||||
-rw-r--r-- | app/include/zmk/events/activity_state_changed.h | 13 | ||||
-rw-r--r-- | app/include/zmk/events/battery_state_changed.h | 5 | ||||
-rw-r--r-- | app/include/zmk/events/ble_active_profile_changed.h | 5 | ||||
-rw-r--r-- | app/include/zmk/events/keycode_state_changed.h | 22 | ||||
-rw-r--r-- | app/include/zmk/events/layer_state_changed.h | 16 | ||||
-rw-r--r-- | app/include/zmk/events/modifiers_state_changed.h | 14 | ||||
-rw-r--r-- | app/include/zmk/events/position_state_changed.h | 10 | ||||
-rw-r--r-- | app/include/zmk/events/sensor_event.h | 6 | ||||
-rw-r--r-- | app/include/zmk/events/usb_conn_state_changed.h | 5 |
10 files changed, 57 insertions, 88 deletions
diff --git a/app/include/zmk/event_manager.h b/app/include/zmk/event_manager.h index e5b6ed5..8fc3f19 100644 --- a/app/include/zmk/event_manager.h +++ b/app/include/zmk/event_manager.h @@ -14,16 +14,16 @@ struct zmk_event_type { const char *name; }; -struct zmk_event_header { +typedef struct { const struct zmk_event_type *event; uint8_t last_listener_index; -}; +} zmk_event_t; #define ZMK_EV_EVENT_BUBBLE 0 #define ZMK_EV_EVENT_HANDLED 1 #define ZMK_EV_EVENT_CAPTURED 2 -typedef int (*zmk_listener_callback_t)(const struct zmk_event_header *eh); +typedef int (*zmk_listener_callback_t)(const zmk_event_t *eh); struct zmk_listener { zmk_listener_callback_t callback; }; @@ -34,25 +34,29 @@ struct zmk_event_subscription { }; #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); \ + struct event_type##_event { \ + zmk_event_t header; \ + struct event_type data; \ + }; \ + struct event_type##_event *new_##event_type(struct event_type); \ + bool is_##event_type(const zmk_event_t *eh); \ + struct event_type *cast_##event_type(const zmk_event_t *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)); \ + struct event_type##_event *new_##event_type(struct event_type data) { \ + struct event_type##_event *ev = \ + (struct event_type##_event *)k_malloc(sizeof(struct event_type##_event)); \ ev->header.event = &zmk_event_##event_type; \ + ev->data = data; \ 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; \ + bool is_##event_type(const zmk_event_t *eh) { return eh->event == &zmk_event_##event_type; }; \ + struct event_type *cast_##event_type(const zmk_event_t *eh) { \ + return &((struct event_type##_event *)eh)->data; \ }; #define ZMK_LISTENER(mod, cb) const struct zmk_listener zmk_listener_##mod = {.callback = cb}; @@ -65,18 +69,19 @@ struct zmk_event_subscription { .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((zmk_event_t *)ev); #define ZMK_EVENT_RAISE_AFTER(ev, mod) \ - zmk_event_manager_raise_after((struct zmk_event_header *)ev, &zmk_listener_##mod); + zmk_event_manager_raise_after((zmk_event_t *)ev, &zmk_listener_##mod); #define ZMK_EVENT_RAISE_AT(ev, mod) \ - zmk_event_manager_raise_at((struct zmk_event_header *)ev, &zmk_listener_##mod); + zmk_event_manager_raise_at((zmk_event_t *)ev, &zmk_listener_##mod); + +#define ZMK_EVENT_RELEASE(ev) zmk_event_manager_release((zmk_event_t *)ev); -#define ZMK_EVENT_RELEASE(ev) zmk_event_manager_release((struct zmk_event_header *)ev); +#define ZMK_EVENT_FREE(ev) k_free((void *)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_at(struct zmk_event_header *event, const struct zmk_listener *listener); -int zmk_event_manager_release(struct zmk_event_header *event); +int zmk_event_manager_raise(zmk_event_t *event); +int zmk_event_manager_raise_after(zmk_event_t *event, const struct zmk_listener *listener); +int zmk_event_manager_raise_at(zmk_event_t *event, const struct zmk_listener *listener); +int zmk_event_manager_release(zmk_event_t *event);
\ No newline at end of file diff --git a/app/include/zmk/events/activity_state_changed.h b/app/include/zmk/events/activity_state_changed.h index 511fbad..998fa2d 100644 --- a/app/include/zmk/events/activity_state_changed.h +++ b/app/include/zmk/events/activity_state_changed.h @@ -10,17 +10,8 @@ #include <zmk/event_manager.h> #include <zmk/activity.h> -struct activity_state_changed { - struct zmk_event_header header; +struct zmk_activity_state_changed { enum zmk_activity_state state; }; -ZMK_EVENT_DECLARE(activity_state_changed); - -static inline struct activity_state_changed * -create_activity_state_changed(enum zmk_activity_state state) { - struct activity_state_changed *ev = new_activity_state_changed(); - ev->state = state; - - return ev; -}
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_activity_state_changed);
\ No newline at end of file diff --git a/app/include/zmk/events/battery_state_changed.h b/app/include/zmk/events/battery_state_changed.h index 47e44ba..6a003d8 100644 --- a/app/include/zmk/events/battery_state_changed.h +++ b/app/include/zmk/events/battery_state_changed.h @@ -9,10 +9,9 @@ #include <zephyr.h> #include <zmk/event_manager.h> -struct battery_state_changed { - struct zmk_event_header header; +struct zmk_battery_state_changed { // TODO: Other battery channels uint8_t state_of_charge; }; -ZMK_EVENT_DECLARE(battery_state_changed);
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_battery_state_changed);
\ No newline at end of file diff --git a/app/include/zmk/events/ble_active_profile_changed.h b/app/include/zmk/events/ble_active_profile_changed.h index fa16126..4d3bb7a 100644 --- a/app/include/zmk/events/ble_active_profile_changed.h +++ b/app/include/zmk/events/ble_active_profile_changed.h @@ -12,10 +12,9 @@ #include <zmk/ble/profile.h> -struct ble_active_profile_changed { - struct zmk_event_header header; +struct zmk_ble_active_profile_changed { uint8_t index; struct zmk_ble_profile *profile; }; -ZMK_EVENT_DECLARE(ble_active_profile_changed); +ZMK_EVENT_DECLARE(zmk_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 85b792b..031169d 100644 --- a/app/include/zmk/events/keycode_state_changed.h +++ b/app/include/zmk/events/keycode_state_changed.h @@ -12,8 +12,7 @@ #include <zmk/event_manager.h> #include <zmk/keys.h> -struct keycode_state_changed { - struct zmk_event_header header; +struct zmk_keycode_state_changed { uint16_t usage_page; uint32_t keycode; uint8_t implicit_modifiers; @@ -21,10 +20,10 @@ struct keycode_state_changed { int64_t timestamp; }; -ZMK_EVENT_DECLARE(keycode_state_changed); +ZMK_EVENT_DECLARE(zmk_keycode_state_changed); -static inline struct keycode_state_changed * -keycode_state_changed_from_encoded(uint32_t encoded, bool pressed, int64_t timestamp) { +static inline struct zmk_keycode_state_changed_event * +zmk_keycode_state_changed_from_encoded(uint32_t encoded, bool pressed, int64_t timestamp) { uint16_t page = HID_USAGE_PAGE(encoded) & 0xFF; uint16_t id = HID_USAGE_ID(encoded); zmk_mod_flags_t implicit_mods = SELECT_MODS(encoded); @@ -33,11 +32,10 @@ keycode_state_changed_from_encoded(uint32_t encoded, bool pressed, int64_t times page = HID_USAGE_KEY; } - struct keycode_state_changed *ev = new_keycode_state_changed(); - ev->usage_page = page; - ev->keycode = id; - ev->implicit_modifiers = implicit_mods; - ev->state = pressed; - ev->timestamp = timestamp; - return ev; + return new_zmk_keycode_state_changed( + (struct zmk_keycode_state_changed){.usage_page = page, + .keycode = id, + .implicit_modifiers = implicit_mods, + .state = pressed, + .timestamp = timestamp}); } diff --git a/app/include/zmk/events/layer_state_changed.h b/app/include/zmk/events/layer_state_changed.h index cf24002..3318354 100644 --- a/app/include/zmk/events/layer_state_changed.h +++ b/app/include/zmk/events/layer_state_changed.h @@ -9,20 +9,16 @@ #include <zephyr.h> #include <zmk/event_manager.h> -struct layer_state_changed { - struct zmk_event_header header; +struct zmk_layer_state_changed { uint8_t layer; bool state; int64_t timestamp; }; -ZMK_EVENT_DECLARE(layer_state_changed); +ZMK_EVENT_DECLARE(zmk_layer_state_changed); -static inline struct layer_state_changed *create_layer_state_changed(uint8_t layer, bool state) { - struct layer_state_changed *ev = new_layer_state_changed(); - ev->layer = layer; - ev->state = state; - ev->timestamp = k_uptime_get(); - - return ev; +static inline struct zmk_layer_state_changed_event *create_layer_state_changed(uint8_t layer, + bool state) { + return new_zmk_layer_state_changed((struct zmk_layer_state_changed){ + .layer = layer, .state = state, .timestamp = k_uptime_get()}); } diff --git a/app/include/zmk/events/modifiers_state_changed.h b/app/include/zmk/events/modifiers_state_changed.h index 4f40f4c..504c2c9 100644 --- a/app/include/zmk/events/modifiers_state_changed.h +++ b/app/include/zmk/events/modifiers_state_changed.h @@ -10,19 +10,9 @@ #include <zmk/keys.h> #include <zmk/event_manager.h> -struct modifiers_state_changed { - struct zmk_event_header header; +struct zmk_modifiers_state_changed { zmk_mod_flags_t modifiers; bool state; }; -ZMK_EVENT_DECLARE(modifiers_state_changed); - -inline struct modifiers_state_changed *create_modifiers_state_changed(zmk_mod_flags_t modifiers, - bool state) { - struct modifiers_state_changed *ev = new_modifiers_state_changed(); - ev->modifiers = modifiers; - ev->state = state; - - return ev; -}
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_modifiers_state_changed);
\ No newline at end of file diff --git a/app/include/zmk/events/position_state_changed.h b/app/include/zmk/events/position_state_changed.h index 7541b47..e2f6872 100644 --- a/app/include/zmk/events/position_state_changed.h +++ b/app/include/zmk/events/position_state_changed.h @@ -8,16 +8,10 @@ #include <zephyr.h> #include <zmk/event_manager.h> - -struct zmk_position_state_changed_data { +struct zmk_position_state_changed { uint32_t position; bool state; int64_t timestamp; }; -struct position_state_changed { - struct zmk_event_header header; - struct zmk_position_state_changed_data data; -}; - -ZMK_EVENT_DECLARE(position_state_changed);
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_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 14fb2d3..f579bc3 100644 --- a/app/include/zmk/events/sensor_event.h +++ b/app/include/zmk/events/sensor_event.h @@ -9,12 +9,10 @@ #include <zephyr.h> #include <zmk/event_manager.h> #include <device.h> - -struct sensor_event { - struct zmk_event_header header; +struct zmk_sensor_event { uint8_t sensor_number; const struct device *sensor; int64_t timestamp; }; -ZMK_EVENT_DECLARE(sensor_event);
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_sensor_event);
\ No newline at end of file diff --git a/app/include/zmk/events/usb_conn_state_changed.h b/app/include/zmk/events/usb_conn_state_changed.h index b38fb9f..b40158c 100644 --- a/app/include/zmk/events/usb_conn_state_changed.h +++ b/app/include/zmk/events/usb_conn_state_changed.h @@ -12,9 +12,8 @@ #include <zmk/event_manager.h> #include <zmk/usb.h> -struct usb_conn_state_changed { - struct zmk_event_header header; +struct zmk_usb_conn_state_changed { enum zmk_usb_conn_state conn_state; }; -ZMK_EVENT_DECLARE(usb_conn_state_changed);
\ No newline at end of file +ZMK_EVENT_DECLARE(zmk_usb_conn_state_changed);
\ No newline at end of file |