summaryrefslogtreecommitdiff
path: root/app/include/drivers/behavior.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/include/drivers/behavior.h')
-rw-r--r--app/include/drivers/behavior.h75
1 files changed, 40 insertions, 35 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);
}
-
/**
* @}
*/