aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorPeter Johanson <[email protected]>2024-01-26 01:48:46 -0800
committerPete Johanson <[email protected]>2024-03-27 20:59:26 -0700
commitbd21f41412eaff5822a17efa86ce1dadf831cbcc (patch)
tree27386e292cd7242187753cfd3c72a4460c0a7d1c
parent5d960a758f6067ae82eccb01d8508114b2a98c6a (diff)
downloadzmk-bd21f41412eaff5822a17efa86ce1dadf831cbcc.tar.gz
zmk-bd21f41412eaff5822a17efa86ce1dadf831cbcc.zip
refactor: Fixes for review feedback.
-rw-r--r--app/Kconfig2
-rw-r--r--app/src/kscan_sideband_behaviors.c29
2 files changed, 13 insertions, 18 deletions
diff --git a/app/Kconfig b/app/Kconfig
index a719875e6b..28d3c22ac5 100644
--- a/app/Kconfig
+++ b/app/Kconfig
@@ -522,7 +522,7 @@ if ZMK_KSCAN_SIDEBAND_BEHAVIORS
config ZMK_KSCAN_SIDEBAND_BEHAVIORS_INIT_PRIORITY
int "Keyboard scan sideband behaviors driver init priority"
- # The default kscan init priority is 90, so be sure we are lower.
+ # The default kscan init priority is 90, so be sure we are initialized later.
default 95
endif # ZMK_KSCAN_SIDEBAND_BEHAVIORS
diff --git a/app/src/kscan_sideband_behaviors.c b/app/src/kscan_sideband_behaviors.c
index 5b8a30a85e..7a9922afda 100644
--- a/app/src/kscan_sideband_behaviors.c
+++ b/app/src/kscan_sideband_behaviors.c
@@ -41,44 +41,41 @@ struct ksbb_data {
// KSBBs to check when a kscan callback from the "wrapped" inner kscan fires.
static const struct device *ksbbs[] = {DT_INST_FOREACH_STATUS_OKAY(GET_KSBB_DEV)};
-int find_ksbb_for_inner(const struct device *inner_dev, const struct device **ksbb_dev) {
+const struct device *find_ksbb_for_inner(const struct device *inner_dev) {
for (int i = 0; i < ARRAY_SIZE(ksbbs); i++) {
const struct device *ksbb = ksbbs[i];
const struct ksbb_config *cfg = ksbb->config;
if (cfg->kscan == inner_dev) {
- *ksbb_dev = ksbb;
- return 0;
+ return ksbb;
}
}
- return -ENODEV;
+ return NULL;
}
-int find_sideband_behavior(const struct device *dev, uint32_t row, uint32_t column,
- struct ksbb_entry **entry) {
+struct ksbb_entry *find_sideband_behavior(const struct device *dev, uint32_t row, uint32_t column) {
const struct ksbb_config *cfg = dev->config;
for (int e = 0; e < cfg->entries_len; e++) {
struct ksbb_entry *candidate = &cfg->entries[e];
if (candidate->row == row && candidate->column == column) {
- *entry = candidate;
- return 0;
+ return candidate;
}
}
- return -ENODEV;
+ return NULL;
}
void ksbb_inner_kscan_callback(const struct device *dev, uint32_t row, uint32_t column,
bool pressed) {
- struct ksbb_entry *entry = NULL;
- const struct device *ksbb = NULL;
-
- if (find_ksbb_for_inner(dev, &ksbb) >= 0) {
+ const struct device *ksbb = find_ksbb_for_inner(dev);
+ if (ksbb) {
struct ksbb_data *data = ksbb->data;
- if (find_sideband_behavior(ksbb, row, column, &entry) >= 0) {
+
+ struct ksbb_entry *entry = find_sideband_behavior(ksbb, row, column);
+ if (entry) {
struct zmk_behavior_binding_event event = {.position = INT32_MAX,
.timestamp = k_uptime_get()};
@@ -159,8 +156,6 @@ static int ksbb_pm_action(const struct device *dev, enum pm_device_action action
#endif // IS_ENABLED(CONFIG_PM_DEVICE)
-#define JUST_ONE(_id) 1
-
#define ENTRY(e) \
{ \
.row = DT_PROP(e, row), .column = DT_PROP(e, column), \
@@ -173,7 +168,7 @@ static int ksbb_pm_action(const struct device *dev, enum pm_device_action action
const struct ksbb_config ksbb_config_##n = { \
.kscan = DEVICE_DT_GET(DT_INST_PHANDLE(n, kscan)), \
.entries = entries_##n, \
- .entries_len = DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(n, JUST_ONE, (+)), \
+ .entries_len = ARRAY_SIZE(entries_##n), \
}; \
struct ksbb_data ksbb_data_##n = {}; \
PM_DEVICE_DT_INST_DEFINE(n, ksbb_pm_action); \