From b3f3362b506d628c53cc610801bc3109965659ea Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 31 Aug 2020 10:18:19 -0400 Subject: feat(display): Initial widget/status screen work. * Battery and output status widgets * Built in status screen combining them. * Ability to define a custom status screen factory function. --- app/src/display/main.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 app/src/display/main.c (limited to 'app/src/display/main.c') diff --git a/app/src/display/main.c b/app/src/display/main.c new file mode 100644 index 0000000..001061f --- /dev/null +++ b/app/src/display/main.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +#include +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include +#include + +#include + +#define ZMK_DISPLAY_NAME CONFIG_LVGL_DISPLAY_DEV_NAME + +static struct device *display; + +static lv_obj_t *screen; + +__attribute__((weak)) lv_obj_t *zmk_display_status_screen() { return NULL; } + +int zmk_display_init() { + LOG_DBG(""); + + display = device_get_binding(ZMK_DISPLAY_NAME); + if (display == NULL) { + LOG_ERR("Failed to find display device"); + return -EINVAL; + } + + screen = zmk_display_status_screen(); + + if (screen == NULL) { + LOG_ERR("No status screen provided"); + return 0; + } + + lv_scr_load(screen); + + lv_task_handler(); + display_blanking_off(display); + + LOG_DBG(""); + return 0; +} + +void zmk_display_task_handler() { + lv_tick_inc(10); + lv_task_handler(); + k_sleep(K_MSEC(10)); +} -- cgit v1.2.3