refactor(behaviors): Make label property optional
Changed all code (except for layer names) which used the label property to use DEVICE_DT_NAME() instead, which uses the label if set or falls back to the full node name. This matches how Zephyr determines the node names used with device_get_binding() and allows us to start removing the deprecated label property from things.
This commit is contained in:
parent
dbe5dfb1d8
commit
179bdbc41a
15 changed files with 71 additions and 63 deletions
|
@ -4,7 +4,8 @@
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required: true
|
required: false
|
||||||
|
deprecated: true
|
||||||
"#binding-cells":
|
"#binding-cells":
|
||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required: true
|
required: false
|
||||||
|
deprecated: true
|
||||||
"#binding-cells":
|
"#binding-cells":
|
||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required: true
|
required: false
|
||||||
|
deprecated: true
|
||||||
"#binding-cells":
|
"#binding-cells":
|
||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
|
|
|
@ -8,7 +8,8 @@ compatible: "zmk,behavior-sensor-rotate-var"
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required: true
|
required: false
|
||||||
|
deprecated: true
|
||||||
"#sensor-binding-cells":
|
"#sensor-binding-cells":
|
||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
|
|
|
@ -8,7 +8,8 @@ compatible: "zmk,behavior-sensor-rotate"
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required: true
|
required: false
|
||||||
|
deprecated: true
|
||||||
"#sensor-binding-cells":
|
"#sensor-binding-cells":
|
||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
|
|
|
@ -6,6 +6,8 @@ compatible: "zmk,kscan-composite"
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
|
required: false
|
||||||
|
deprecated: true
|
||||||
rows:
|
rows:
|
||||||
type: int
|
type: int
|
||||||
columns:
|
columns:
|
||||||
|
@ -17,6 +19,8 @@ child-binding:
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
|
required: false
|
||||||
|
deprecated: true
|
||||||
kscan:
|
kscan:
|
||||||
type: phandle
|
type: phandle
|
||||||
row-offset:
|
row-offset:
|
||||||
|
|
|
@ -6,6 +6,8 @@ compatible: "zmk,kscan-mock"
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
|
required: false
|
||||||
|
deprecated: true
|
||||||
event-period:
|
event-period:
|
||||||
type: int
|
type: int
|
||||||
description: Milliseconds between each generated event
|
description: Milliseconds between each generated event
|
||||||
|
|
|
@ -29,7 +29,7 @@ int zmk_keymap_position_state_changed(uint8_t source, uint32_t position, bool pr
|
||||||
|
|
||||||
#define ZMK_KEYMAP_EXTRACT_BINDING(idx, drv_inst) \
|
#define ZMK_KEYMAP_EXTRACT_BINDING(idx, drv_inst) \
|
||||||
{ \
|
{ \
|
||||||
.behavior_dev = DT_PROP(DT_PHANDLE_BY_IDX(drv_inst, bindings, idx), label), \
|
.behavior_dev = DEVICE_DT_NAME(DT_PHANDLE_BY_IDX(drv_inst, bindings, idx)), \
|
||||||
.param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param1), (0), \
|
.param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param1), (0), \
|
||||||
(DT_PHA_BY_IDX(drv_inst, bindings, idx, param1))), \
|
(DT_PHA_BY_IDX(drv_inst, bindings, idx, param1))), \
|
||||||
.param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param2), (0), \
|
.param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param2), (0), \
|
||||||
|
|
|
@ -703,8 +703,8 @@ static int behavior_hold_tap_init(const struct device *dev) {
|
||||||
#define KP_INST(n) \
|
#define KP_INST(n) \
|
||||||
static struct behavior_hold_tap_config behavior_hold_tap_config_##n = { \
|
static struct behavior_hold_tap_config behavior_hold_tap_config_##n = { \
|
||||||
.tapping_term_ms = DT_INST_PROP(n, tapping_term_ms), \
|
.tapping_term_ms = DT_INST_PROP(n, tapping_term_ms), \
|
||||||
.hold_behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(n, bindings, 0), label), \
|
.hold_behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(n, bindings, 0)), \
|
||||||
.tap_behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(n, bindings, 1), label), \
|
.tap_behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(n, bindings, 1)), \
|
||||||
.quick_tap_ms = DT_INST_PROP(n, quick_tap_ms), \
|
.quick_tap_ms = DT_INST_PROP(n, quick_tap_ms), \
|
||||||
.require_prior_idle_ms = DT_INST_PROP(n, global_quick_tap) \
|
.require_prior_idle_ms = DT_INST_PROP(n, global_quick_tap) \
|
||||||
? DT_INST_PROP(n, quick_tap_ms) \
|
? DT_INST_PROP(n, quick_tap_ms) \
|
||||||
|
|
|
@ -44,18 +44,18 @@ struct behavior_macro_config {
|
||||||
struct zmk_behavior_binding bindings[];
|
struct zmk_behavior_binding bindings[];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TAP_MODE DT_PROP(DT_INST(0, zmk_macro_control_mode_tap), label)
|
#define TAP_MODE DEVICE_DT_NAME(DT_INST(0, zmk_macro_control_mode_tap))
|
||||||
#define PRESS_MODE DT_PROP(DT_INST(0, zmk_macro_control_mode_press), label)
|
#define PRESS_MODE DEVICE_DT_NAME(DT_INST(0, zmk_macro_control_mode_press))
|
||||||
#define REL_MODE DT_PROP(DT_INST(0, zmk_macro_control_mode_release), label)
|
#define REL_MODE DEVICE_DT_NAME(DT_INST(0, zmk_macro_control_mode_release))
|
||||||
|
|
||||||
#define TAP_TIME DT_PROP(DT_INST(0, zmk_macro_control_tap_time), label)
|
#define TAP_TIME DEVICE_DT_NAME(DT_INST(0, zmk_macro_control_tap_time))
|
||||||
#define WAIT_TIME DT_PROP(DT_INST(0, zmk_macro_control_wait_time), label)
|
#define WAIT_TIME DEVICE_DT_NAME(DT_INST(0, zmk_macro_control_wait_time))
|
||||||
#define WAIT_REL DT_PROP(DT_INST(0, zmk_macro_pause_for_release), label)
|
#define WAIT_REL DEVICE_DT_NAME(DT_INST(0, zmk_macro_pause_for_release))
|
||||||
|
|
||||||
#define P1TO1 DT_PROP(DT_INST(0, zmk_macro_param_1to1), label)
|
#define P1TO1 DEVICE_DT_NAME(DT_INST(0, zmk_macro_param_1to1))
|
||||||
#define P1TO2 DT_PROP(DT_INST(0, zmk_macro_param_1to2), label)
|
#define P1TO2 DEVICE_DT_NAME(DT_INST(0, zmk_macro_param_1to2))
|
||||||
#define P2TO1 DT_PROP(DT_INST(0, zmk_macro_param_2to1), label)
|
#define P2TO1 DEVICE_DT_NAME(DT_INST(0, zmk_macro_param_2to1))
|
||||||
#define P2TO2 DT_PROP(DT_INST(0, zmk_macro_param_2to2), label)
|
#define P2TO2 DEVICE_DT_NAME(DT_INST(0, zmk_macro_param_2to2))
|
||||||
|
|
||||||
#define ZM_IS_NODE_MATCH(a, b) (strcmp(a, b) == 0)
|
#define ZM_IS_NODE_MATCH(a, b) (strcmp(a, b) == 0)
|
||||||
#define IS_TAP_MODE(dev) ZM_IS_NODE_MATCH(dev, TAP_MODE)
|
#define IS_TAP_MODE(dev) ZM_IS_NODE_MATCH(dev, TAP_MODE)
|
||||||
|
|
|
@ -81,7 +81,7 @@ static int behavior_mod_morph_init(const struct device *dev) { return 0; }
|
||||||
|
|
||||||
#define _TRANSFORM_ENTRY(idx, node) \
|
#define _TRANSFORM_ENTRY(idx, node) \
|
||||||
{ \
|
{ \
|
||||||
.behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(node, bindings, idx), label), \
|
.behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(node, bindings, idx)), \
|
||||||
.param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), \
|
.param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), \
|
||||||
(DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \
|
(DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \
|
||||||
.param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), \
|
.param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), \
|
||||||
|
|
|
@ -20,7 +20,7 @@ static int behavior_sensor_rotate_init(const struct device *dev) { return 0; };
|
||||||
|
|
||||||
#define _TRANSFORM_ENTRY(idx, node) \
|
#define _TRANSFORM_ENTRY(idx, node) \
|
||||||
{ \
|
{ \
|
||||||
.behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(node, bindings, idx), label), \
|
.behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(node, bindings, idx)), \
|
||||||
.param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), \
|
.param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), \
|
||||||
(DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \
|
(DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \
|
||||||
.param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), \
|
.param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), \
|
||||||
|
|
|
@ -20,8 +20,8 @@ static int behavior_sensor_rotate_var_init(const struct device *dev) { return 0;
|
||||||
|
|
||||||
#define SENSOR_ROTATE_VAR_INST(n) \
|
#define SENSOR_ROTATE_VAR_INST(n) \
|
||||||
static struct behavior_sensor_rotate_config behavior_sensor_rotate_var_config_##n = { \
|
static struct behavior_sensor_rotate_config behavior_sensor_rotate_var_config_##n = { \
|
||||||
.cw_binding = {.behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(n, bindings, 0), label)}, \
|
.cw_binding = {.behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(n, bindings, 0))}, \
|
||||||
.ccw_binding = {.behavior_dev = DT_PROP(DT_INST_PHANDLE_BY_IDX(n, bindings, 1), label)}, \
|
.ccw_binding = {.behavior_dev = DEVICE_DT_NAME(DT_INST_PHANDLE_BY_IDX(n, bindings, 1))}, \
|
||||||
.tap_ms = DT_INST_PROP(n, tap_ms), \
|
.tap_ms = DT_INST_PROP(n, tap_ms), \
|
||||||
.override_params = true, \
|
.override_params = true, \
|
||||||
}; \
|
}; \
|
||||||
|
|
|
@ -39,7 +39,7 @@ static void ext_power_save_state_work(struct k_work *work) {
|
||||||
const struct device *ext_power = DEVICE_DT_GET(DT_DRV_INST(0));
|
const struct device *ext_power = DEVICE_DT_GET(DT_DRV_INST(0));
|
||||||
struct ext_power_generic_data *data = ext_power->data;
|
struct ext_power_generic_data *data = ext_power->data;
|
||||||
|
|
||||||
snprintf(setting_path, 40, "ext_power/state/%s", DT_INST_PROP(0, label));
|
snprintf(setting_path, sizeof(setting_path), "ext_power/state/%s", ext_power->name);
|
||||||
settings_save_one(setting_path, &data->status, sizeof(data->status));
|
settings_save_one(setting_path, &data->status, sizeof(data->status));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,38 +86,38 @@ static int ext_power_generic_get(const struct device *dev) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_SETTINGS)
|
#if IS_ENABLED(CONFIG_SETTINGS)
|
||||||
|
static int ext_power_settings_set_status(const struct device *dev, size_t len,
|
||||||
|
settings_read_cb read_cb, void *cb_arg) {
|
||||||
|
struct ext_power_generic_data *data = dev->data;
|
||||||
|
|
||||||
|
if (len != sizeof(data->status)) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rc = read_cb(cb_arg, &data->status, sizeof(data->status));
|
||||||
|
if (rc >= 0) {
|
||||||
|
data->settings_init = true;
|
||||||
|
|
||||||
|
if (data->status) {
|
||||||
|
ext_power_generic_enable(dev);
|
||||||
|
} else {
|
||||||
|
ext_power_generic_disable(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
static int ext_power_settings_set(const char *name, size_t len, settings_read_cb read_cb,
|
static int ext_power_settings_set(const char *name, size_t len, settings_read_cb read_cb,
|
||||||
void *cb_arg) {
|
void *cb_arg) {
|
||||||
|
const struct device *ext_power = DEVICE_DT_GET(DT_DRV_INST(0));
|
||||||
|
|
||||||
const char *next;
|
const char *next;
|
||||||
int rc;
|
if (settings_name_steq(name, ext_power->name, &next) && !next) {
|
||||||
|
return ext_power_settings_set_status(ext_power, len, read_cb, cb_arg);
|
||||||
if (settings_name_steq(name, DT_INST_PROP(0, label), &next) && !next) {
|
|
||||||
const struct device *ext_power = DEVICE_DT_GET(DT_DRV_INST(0));
|
|
||||||
struct ext_power_generic_data *data = ext_power->data;
|
|
||||||
|
|
||||||
if (len != sizeof(data->status)) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = read_cb(cb_arg, &data->status, sizeof(data->status));
|
|
||||||
if (rc >= 0) {
|
|
||||||
data->settings_init = true;
|
|
||||||
|
|
||||||
if (ext_power == NULL) {
|
|
||||||
LOG_ERR("Unable to retrieve ext_power device: %s", DT_INST_PROP(0, label));
|
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data->status) {
|
|
||||||
ext_power_generic_enable(ext_power);
|
|
||||||
} else {
|
|
||||||
ext_power_generic_disable(ext_power);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,13 @@ static uint8_t _zmk_keymap_layer_default = 0;
|
||||||
|
|
||||||
#define DT_DRV_COMPAT zmk_keymap
|
#define DT_DRV_COMPAT zmk_keymap
|
||||||
|
|
||||||
#define BINDING_WITH_COMMA(idx, drv_inst) ZMK_KEYMAP_EXTRACT_BINDING(idx, drv_inst)
|
|
||||||
|
|
||||||
#define TRANSFORMED_LAYER(node) \
|
#define TRANSFORMED_LAYER(node) \
|
||||||
{LISTIFY(DT_PROP_LEN(node, bindings), BINDING_WITH_COMMA, (, ), node)},
|
{ LISTIFY(DT_PROP_LEN(node, bindings), ZMK_KEYMAP_EXTRACT_BINDING, (, ), node) }
|
||||||
|
|
||||||
#if ZMK_KEYMAP_HAS_SENSORS
|
#if ZMK_KEYMAP_HAS_SENSORS
|
||||||
#define _TRANSFORM_SENSOR_ENTRY(idx, layer) \
|
#define _TRANSFORM_SENSOR_ENTRY(idx, layer) \
|
||||||
{ \
|
{ \
|
||||||
.behavior_dev = DT_PROP(DT_PHANDLE_BY_IDX(layer, sensor_bindings, idx), label), \
|
.behavior_dev = DEVICE_DT_NAME(DT_PHANDLE_BY_IDX(layer, sensor_bindings, idx)), \
|
||||||
.param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param1), (0), \
|
.param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param1), (0), \
|
||||||
(DT_PHA_BY_IDX(layer, sensor_bindings, idx, param1))), \
|
(DT_PHA_BY_IDX(layer, sensor_bindings, idx, param1))), \
|
||||||
.param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param2), (0), \
|
.param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param2), (0), \
|
||||||
|
@ -50,12 +48,11 @@ static uint8_t _zmk_keymap_layer_default = 0;
|
||||||
COND_CODE_1( \
|
COND_CODE_1( \
|
||||||
DT_NODE_HAS_PROP(node, sensor_bindings), \
|
DT_NODE_HAS_PROP(node, sensor_bindings), \
|
||||||
({LISTIFY(DT_PROP_LEN(node, sensor_bindings), _TRANSFORM_SENSOR_ENTRY, (, ), node)}), \
|
({LISTIFY(DT_PROP_LEN(node, sensor_bindings), _TRANSFORM_SENSOR_ENTRY, (, ), node)}), \
|
||||||
({})),
|
({}))
|
||||||
|
|
||||||
#endif /* ZMK_KEYMAP_HAS_SENSORS */
|
#endif /* ZMK_KEYMAP_HAS_SENSORS */
|
||||||
|
|
||||||
#define LAYER_LABEL(node) \
|
#define LAYER_LABEL(node) DT_PROP_OR(node, label, NULL)
|
||||||
COND_CODE_0(DT_NODE_HAS_PROP(node, label), (NULL), (DT_PROP(node, label))),
|
|
||||||
|
|
||||||
// State
|
// State
|
||||||
|
|
||||||
|
@ -65,16 +62,16 @@ static uint8_t _zmk_keymap_layer_default = 0;
|
||||||
static uint32_t zmk_keymap_active_behavior_layer[ZMK_KEYMAP_LEN];
|
static uint32_t zmk_keymap_active_behavior_layer[ZMK_KEYMAP_LEN];
|
||||||
|
|
||||||
static struct zmk_behavior_binding zmk_keymap[ZMK_KEYMAP_LAYERS_LEN][ZMK_KEYMAP_LEN] = {
|
static struct zmk_behavior_binding zmk_keymap[ZMK_KEYMAP_LAYERS_LEN][ZMK_KEYMAP_LEN] = {
|
||||||
DT_INST_FOREACH_CHILD(0, TRANSFORMED_LAYER)};
|
DT_INST_FOREACH_CHILD_SEP(0, TRANSFORMED_LAYER, (, ))};
|
||||||
|
|
||||||
static const char *zmk_keymap_layer_names[ZMK_KEYMAP_LAYERS_LEN] = {
|
static const char *zmk_keymap_layer_names[ZMK_KEYMAP_LAYERS_LEN] = {
|
||||||
DT_INST_FOREACH_CHILD(0, LAYER_LABEL)};
|
DT_INST_FOREACH_CHILD_SEP(0, LAYER_LABEL, (, ))};
|
||||||
|
|
||||||
#if ZMK_KEYMAP_HAS_SENSORS
|
#if ZMK_KEYMAP_HAS_SENSORS
|
||||||
|
|
||||||
static struct zmk_behavior_binding zmk_sensor_keymap[ZMK_KEYMAP_LAYERS_LEN]
|
static struct zmk_behavior_binding
|
||||||
[ZMK_KEYMAP_SENSORS_LEN] = {
|
zmk_sensor_keymap[ZMK_KEYMAP_LAYERS_LEN][ZMK_KEYMAP_SENSORS_LEN] = {
|
||||||
DT_INST_FOREACH_CHILD(0, SENSOR_LAYER)};
|
DT_INST_FOREACH_CHILD_SEP(0, SENSOR_LAYER, (, ))};
|
||||||
|
|
||||||
#endif /* ZMK_KEYMAP_HAS_SENSORS */
|
#endif /* ZMK_KEYMAP_HAS_SENSORS */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue