summaryrefslogtreecommitdiff
path: root/app/src/kscan.c
diff options
context:
space:
mode:
authorNick <nick.win999@gmail.com>2020-09-19 19:15:05 -0500
committerNick <nick.win999@gmail.com>2020-09-19 19:15:05 -0500
commitda0fb965f6b6a67154e20a3fddda48f5bc392d77 (patch)
treef7f9aa9a45b39bb4d943eb7d2ba6e71d516ab40c /app/src/kscan.c
parent844f2c76749cbc5ff611d8e69819af82b698089a (diff)
parentc0806d27f1d048db335ecc854eab61b59e23ea7a (diff)
Merge remote-tracking branch 'upstream/main' into bluetooth/battery-reporting
Diffstat (limited to 'app/src/kscan.c')
-rw-r--r--app/src/kscan.c80
1 files changed, 37 insertions, 43 deletions
diff --git a/app/src/kscan.c b/app/src/kscan.c
index 63713f1..0046f5c 100644
--- a/app/src/kscan.c
+++ b/app/src/kscan.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 Peter Johanson
+ * Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
@@ -18,61 +18,55 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
#define ZMK_KSCAN_EVENT_STATE_PRESSED 0
#define ZMK_KSCAN_EVENT_STATE_RELEASED 1
-struct zmk_kscan_event
-{
- u32_t row;
- u32_t column;
- u32_t state;
+struct zmk_kscan_event {
+ u32_t row;
+ u32_t column;
+ u32_t state;
};
-struct zmk_kscan_msg_processor
-{
- struct k_work work;
+struct zmk_kscan_msg_processor {
+ struct k_work work;
} msg_processor;
K_MSGQ_DEFINE(zmk_kscan_msgq, sizeof(struct zmk_kscan_event), CONFIG_ZMK_KSCAN_EVENT_QUEUE_SIZE, 4);
-static void zmk_kscan_callback(struct device *dev, u32_t row, u32_t column, bool pressed)
-{
- struct zmk_kscan_event ev = {
- .row = row,
- .column = column,
- .state = (pressed ? ZMK_KSCAN_EVENT_STATE_PRESSED : ZMK_KSCAN_EVENT_STATE_RELEASED)};
+static void zmk_kscan_callback(struct device *dev, u32_t row, u32_t column, bool pressed) {
+ struct zmk_kscan_event ev = {
+ .row = row,
+ .column = column,
+ .state = (pressed ? ZMK_KSCAN_EVENT_STATE_PRESSED : ZMK_KSCAN_EVENT_STATE_RELEASED)};
- k_msgq_put(&zmk_kscan_msgq, &ev, K_NO_WAIT);
- k_work_submit(&msg_processor.work);
+ k_msgq_put(&zmk_kscan_msgq, &ev, K_NO_WAIT);
+ k_work_submit(&msg_processor.work);
}
-void zmk_kscan_process_msgq(struct k_work *item)
-{
- struct zmk_kscan_event ev;
+void zmk_kscan_process_msgq(struct k_work *item) {
+ struct zmk_kscan_event ev;
- while (k_msgq_get(&zmk_kscan_msgq, &ev, K_NO_WAIT) == 0)
- {
- bool pressed = (ev.state == ZMK_KSCAN_EVENT_STATE_PRESSED);
- u32_t position = zmk_matrix_transform_row_column_to_position(ev.row, ev.column);
- struct position_state_changed *pos_ev;
- LOG_DBG("Row: %d, col: %d, position: %d, pressed: %s\n", ev.row, ev.column, position, (pressed ? "true" : "false"));
- pos_ev = new_position_state_changed();
- pos_ev->state = pressed;
- pos_ev->position = position;
- ZMK_EVENT_RAISE(pos_ev);
- }
+ while (k_msgq_get(&zmk_kscan_msgq, &ev, K_NO_WAIT) == 0) {
+ bool pressed = (ev.state == ZMK_KSCAN_EVENT_STATE_PRESSED);
+ u32_t position = zmk_matrix_transform_row_column_to_position(ev.row, ev.column);
+ struct position_state_changed *pos_ev;
+ LOG_DBG("Row: %d, col: %d, position: %d, pressed: %s\n", ev.row, ev.column, position,
+ (pressed ? "true" : "false"));
+ pos_ev = new_position_state_changed();
+ pos_ev->state = pressed;
+ pos_ev->position = position;
+ ZMK_EVENT_RAISE(pos_ev);
+ }
}
-int zmk_kscan_init(char *name)
-{
- struct device *dev = device_get_binding(name);
- if (dev == NULL)
- {
- LOG_ERR("Failed to get the KSCAN device");
- return -EINVAL;
- }
+int zmk_kscan_init(char *name) {
+ struct device *dev = device_get_binding(name);
+ if (dev == NULL) {
+ LOG_ERR("Failed to get the KSCAN device");
+ return -EINVAL;
+ }
- k_work_init(&msg_processor.work, zmk_kscan_process_msgq);
+ k_work_init(&msg_processor.work, zmk_kscan_process_msgq);
- kscan_config(dev, zmk_kscan_callback);
- kscan_enable_callback(dev);
+ kscan_config(dev, zmk_kscan_callback);
+ kscan_enable_callback(dev);
- return 0;
+ return 0;
}