diff options
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/display.c | 56 | ||||
-rw-r--r-- | app/src/endpoints.c | 1 | ||||
-rw-r--r-- | app/src/main.c | 10 | ||||
-rw-r--r-- | app/src/sensors.c | 3 |
4 files changed, 67 insertions, 3 deletions
diff --git a/app/src/display.c b/app/src/display.c new file mode 100644 index 0000000..9021914 --- /dev/null +++ b/app/src/display.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#include <init.h> +#include <device.h> +#include <devicetree.h> + +#include <logging/log.h> +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include <drivers/display.h> +#include <lvgl.h> + +#define ZMK_DISPLAY_NAME CONFIG_LVGL_DISPLAY_DEV_NAME + +static struct device *display; + +static lv_obj_t *screen; + +int zmk_display_init() +{ + lv_obj_t *hello_world_label; + lv_obj_t *count_label; + + LOG_DBG(""); + + display = device_get_binding(ZMK_DISPLAY_NAME); + if (display == NULL) { + LOG_ERR("Failed to find display device"); + return -EINVAL; + } + + screen = lv_obj_create(NULL, NULL); + lv_scr_load(screen); + + hello_world_label = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text(hello_world_label, "ZMK v0.1.0"); + lv_obj_align(hello_world_label, NULL, LV_ALIGN_CENTER, 0, 0); + count_label = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text(count_label, CONFIG_ZMK_KEYBOARD_NAME); + lv_obj_align(count_label, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_task_handler(); + display_blanking_off(display); + + return 0; +} + +void zmk_display_task_handler() +{ + lv_tick_inc(10); + lv_task_handler(); + k_sleep(K_MSEC(10)); +} diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 48dc2ec..c9ba716 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -3,7 +3,6 @@ #include <zmk/hid.h> #include <zmk/usb_hid.h> #include <zmk/hog.h> -# #include <logging/log.h> LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); diff --git a/app/src/main.c b/app/src/main.c index 5f28158..5a678ee 100644 --- a/app/src/main.c +++ b/app/src/main.c @@ -14,7 +14,7 @@ LOG_MODULE_REGISTER(zmk, CONFIG_ZMK_LOG_LEVEL); #include <zmk/matrix.h> #include <zmk/kscan.h> -#include <zmk/endpoints.h> +#include <zmk/display.h> #define ZMK_KSCAN_DEV DT_LABEL(ZMK_MATRIX_NODE_ID) @@ -26,4 +26,12 @@ void main(void) { return; } + +#ifdef CONFIG_ZMK_DISPLAY + zmk_display_init(); + + while (1) { + zmk_display_task_handler(); + } +#endif /* CONFIG_ZMK_DISPLAY */ } diff --git a/app/src/sensors.c b/app/src/sensors.c index 0a86109..501ce15 100644 --- a/app/src/sensors.c +++ b/app/src/sensors.c @@ -60,7 +60,8 @@ static void zmk_sensors_init_item(const char *node, u8_t i, u8_t abs_i) sensors[i].sensor_number = abs_i; if (!sensors[i].dev) { - LOG_ERR("Failed to find device for %s", node); + LOG_WRN("Failed to find device for %s", node); + return; } sensor_trigger_set(sensors[i].dev, &sensors[i].trigger, zmk_sensors_trigger_handler); |