You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.7 KiB
89 lines
1.7 KiB
/* |
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
#include <init.h> |
|
#include <zephyr.h> |
|
#include <lvgl.h> |
|
#include <lv_core/lv_refr.h> |
|
#include "lvgl_color.h" |
|
#include "lvgl_fs.h" |
|
|
|
#define LOG_LEVEL CONFIG_LVGL_LOG_LEVEL |
|
#include <logging/log.h> |
|
LOG_MODULE_REGISTER(lvgl); |
|
|
|
struct device *lvgl_display_dev; |
|
|
|
#if CONFIG_LVGL_LOG_LEVEL != 0 |
|
static void lvgl_log(lv_log_level_t level, const char *file, uint32_t line, |
|
const char *dsc) |
|
{ |
|
/* Convert LVGL log level to Zephyr log lvel |
|
* |
|
* LVGL log level mapping: |
|
* * LV_LOG_LEVEL_TRACE 0 |
|
* * LV_LOG_LEVEL_INFO 1 |
|
* * LV_LOG_LEVEL_WARN 2 |
|
* * LV_LOG_LEVEL_ERROR 3 |
|
* * LV_LOG_LEVEL_NUM 4 |
|
* |
|
* Zephyr log level mapping: |
|
* * LOG_LEVEL_NONE 0 |
|
* * LOG_LEVEL_ERR 1 |
|
* * LOG_LEVEL_WRN 2 |
|
* * LOG_LEVEL_INF 3 |
|
* * LOG_LEVEL_DBG 4 |
|
*/ |
|
u8_t zephyr_level = LOG_LEVEL_DBG - level; |
|
|
|
ARG_UNUSED(file); |
|
ARG_UNUSED(line); |
|
|
|
_LOG(zephyr_level, "%s", dsc); |
|
} |
|
#endif |
|
|
|
|
|
static int lvgl_init(struct device *dev) |
|
{ |
|
lv_disp_drv_t disp_drv; |
|
|
|
ARG_UNUSED(dev); |
|
|
|
lvgl_display_dev = device_get_binding(CONFIG_LVGL_DISPLAY_DEV_NAME); |
|
|
|
if (lvgl_display_dev == NULL) { |
|
LOG_ERR("Display device not found."); |
|
return -ENODEV; |
|
} |
|
|
|
#if CONFIG_LVGL_LOG_LEVEL != 0 |
|
lv_log_register_print(lvgl_log); |
|
#endif |
|
|
|
lv_init(); |
|
|
|
#ifdef CONFIG_LVGL_FILESYSTEM |
|
lvgl_fs_init(); |
|
#endif |
|
|
|
lv_refr_set_round_cb(get_round_func()); |
|
|
|
lv_disp_drv_init(&disp_drv); |
|
disp_drv.disp_flush = get_disp_flush(); |
|
|
|
#if CONFIG_LVGL_VDB_SIZE != 0 |
|
disp_drv.vdb_wr = get_vdb_write(); |
|
#endif |
|
if (lv_disp_drv_register(&disp_drv) == NULL) { |
|
LOG_ERR("Failed to register display device."); |
|
return -EPERM; |
|
} |
|
|
|
return 0; |
|
} |
|
|
|
SYS_INIT(lvgl_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);
|
|
|