Behaviors can accept a third u32 parameter

This commit is contained in:
Phillip Tennen 2024-03-13 12:01:38 +00:00
parent 2adaa00d10
commit d7fc83b0d3
5 changed files with 8 additions and 4 deletions

View file

@ -15,6 +15,7 @@ struct zmk_behavior_binding {
char *behavior_dev; char *behavior_dev;
uint32_t param1; uint32_t param1;
uint32_t param2; uint32_t param2;
uint32_t param3;
}; };
struct zmk_behavior_binding_event { struct zmk_behavior_binding_event {

View file

@ -23,6 +23,7 @@ struct zmk_split_run_behavior_data {
uint8_t state; uint8_t state;
uint32_t param1; uint32_t param1;
uint32_t param2; uint32_t param2;
uint32_t param3;
} __packed; } __packed;
struct zmk_split_run_behavior_payload { struct zmk_split_run_behavior_payload {

View file

@ -28,8 +28,8 @@ static void behavior_queue_process_next(struct k_work *work) {
struct q_item item = {.wait = 0}; struct q_item item = {.wait = 0};
while (k_msgq_get(&zmk_behavior_queue_msgq, &item, K_NO_WAIT) == 0) { while (k_msgq_get(&zmk_behavior_queue_msgq, &item, K_NO_WAIT) == 0) {
LOG_DBG("Invoking %s: 0x%02x 0x%02x", item.binding.behavior_dev, item.binding.param1, LOG_DBG("Invoking %s: 0x%02x 0x%02x 0x%02x", item.binding.behavior_dev, item.binding.param1,
item.binding.param2); item.binding.param2, item.binding.param3);
struct zmk_behavior_binding_event event = {.position = item.position, struct zmk_behavior_binding_event event = {.position = item.position,
.timestamp = k_uptime_get()}; .timestamp = k_uptime_get()};

View file

@ -814,6 +814,7 @@ int zmk_split_bt_invoke_behavior(uint8_t source, struct zmk_behavior_binding *bi
struct zmk_split_run_behavior_payload payload = {.data = { struct zmk_split_run_behavior_payload payload = {.data = {
.param1 = binding->param1, .param1 = binding->param1,
.param2 = binding->param2, .param2 = binding->param2,
.param3 = binding->param3,
.position = event.position, .position = event.position,
.state = state ? 1 : 0, .state = state ? 1 : 0,
}}; }};

View file

@ -80,10 +80,11 @@ static ssize_t split_svc_run_behavior(struct bt_conn *conn, const struct bt_gatt
struct zmk_behavior_binding binding = { struct zmk_behavior_binding binding = {
.param1 = payload->data.param1, .param1 = payload->data.param1,
.param2 = payload->data.param2, .param2 = payload->data.param2,
.param3 = payload->data.param3,
.behavior_dev = payload->behavior_dev, .behavior_dev = payload->behavior_dev,
}; };
LOG_DBG("%s with params %d %d: pressed? %d", binding.behavior_dev, binding.param1, LOG_WRN("%s with params %d %d %d: pressed? %d", binding.behavior_dev, binding.param1,
binding.param2, payload->data.state); binding.param2, binding.param3, payload->data.state);
struct zmk_behavior_binding_event event = {.position = payload->data.position, struct zmk_behavior_binding_event event = {.position = payload->data.position,
.timestamp = k_uptime_get()}; .timestamp = k_uptime_get()};
int err; int err;