Skip to content

Commit

Permalink
fixup! feat: Refactor behaviors, sensor to raise behavior_binding_event
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick-Munnich committed Mar 8, 2025
1 parent 07a7ce7 commit 2ff68d9
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 32 deletions.
23 changes: 12 additions & 11 deletions app/include/zmk/sensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@

#if ZMK_KEYMAP_HAS_SENSORS
#define ZMK_KEYMAP_SENSORS_LEN DT_PROP_LEN(ZMK_KEYMAP_SENSORS_NODE, sensors)

struct zmk_sensor_data {
struct sensor_value remainder;
int num_triggers;
};

struct zmk_sensor_data *zmk_sensor_get_data(uint32_t sensor_idx);

void zmk_sensor_set_num_triggers(uint32_t sensor_idx, int num_triggers);

void zmk_sensor_set_remainder(uint32_t sensor_idx, struct sensor_value remainder);

#else
#define ZMK_KEYMAP_SENSORS_LEN 0
#endif
Expand All @@ -24,20 +36,9 @@ struct zmk_sensor_config {
uint16_t triggers_per_rotation;
};

struct zmk_sensor_data {
struct sensor_value remainder;
int num_triggers;
};

// This struct is also used for data transfer for splits, so any changes to the size, layout, etc
// is a breaking change for the split GATT service protocol.
struct zmk_sensor_channel_data {
struct sensor_value value;
enum sensor_channel channel;
} __packed;

struct zmk_sensor_data *zmk_sensor_get_data(uint32_t sensor_idx);

void zmk_sensor_set_num_triggers(uint32_t sensor_idx, int num_triggers);

void zmk_sensor_set_remainder(uint32_t sensor_idx, struct sensor_value remainder);
41 changes: 20 additions & 21 deletions app/src/sensors.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
#include <zmk/behavior.h>
#include <zmk/keymap.h>

struct zmk_sensor_data sensor_data[ZMK_KEYMAP_SENSORS_LEN] = {};

struct zmk_sensor_data *zmk_sensor_get_data(uint32_t sensor_idx) {
if (sensor_idx >= ZMK_KEYMAP_SENSORS_LEN) {
return NULL;
}
return &sensor_data[sensor_idx];
};

void zmk_sensor_set_num_triggers(uint32_t sensor_idx, int num_triggers) {
if (sensor_idx < ZMK_KEYMAP_SENSORS_LEN) {
sensor_data[sensor_idx].num_triggers = num_triggers;
}
};

void zmk_sensor_set_remainder(uint32_t sensor_idx, struct sensor_value remainder) {
if (sensor_idx < ZMK_KEYMAP_SENSORS_LEN) {
sensor_data[sensor_idx].remainder = remainder;
}
};

#if ZMK_KEYMAP_HAS_SENSORS

struct sensors_item_cfg {
Expand Down Expand Up @@ -77,6 +56,26 @@ static struct zmk_sensor_config configs[] = {
};

static struct sensors_item_cfg sensors[] = {LISTIFY(ZMK_KEYMAP_SENSORS_LEN, SENSOR_ITEM, (, ), 0)};
struct zmk_sensor_data sensor_data[ZMK_KEYMAP_SENSORS_LEN] = {};

struct zmk_sensor_data *zmk_sensor_get_data(uint32_t sensor_idx) {
if (sensor_idx >= ZMK_KEYMAP_SENSORS_LEN) {
return NULL;
}
return &sensor_data[sensor_idx];
};

void zmk_sensor_set_num_triggers(uint32_t sensor_idx, int num_triggers) {
if (sensor_idx < ZMK_KEYMAP_SENSORS_LEN) {
sensor_data[sensor_idx].num_triggers = num_triggers;
}
};

void zmk_sensor_set_remainder(uint32_t sensor_idx, struct sensor_value remainder) {
if (sensor_idx < ZMK_KEYMAP_SENSORS_LEN) {
sensor_data[sensor_idx].remainder = remainder;
}
};

static ATOMIC_DEFINE(pending_sensors, ZMK_KEYMAP_SENSORS_LEN);

Expand Down

0 comments on commit 2ff68d9

Please sign in to comment.