From 80686e6bc4cb17e9d856647084725203fa63ebe6 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Mon, 19 Aug 2024 16:47:42 +0800
Subject: [PATCH] Add LCD API examples

---
 hal/lcd/lvgl/lvgl_demo.c |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/hal/lcd/lvgl/lvgl_demo.c b/hal/lcd/lvgl/lvgl_demo.c
new file mode 100644
index 0000000..f7eeb5c
--- /dev/null
+++ b/hal/lcd/lvgl/lvgl_demo.c
@@ -0,0 +1,91 @@
+/*********************************************************************************
+ *      Copyright:  (C) 2021 LingYun IoT System Studio
+ *                  All rights reserved.
+ *
+ *       Filename:  lvgl_demo.c
+ *    Description:  This file is LVGL demo program.
+ *                 
+ *        Version:  1.0.0(2021年09月27日)
+ *         Author:  Guo Wenxue <guowenxue@gmail.com>
+ *      ChangeLog:  1, Release initial version on "2021年09月27日 22时16分52秒"
+ *                 
+ ********************************************************************************/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <time.h>
+#include <sys/time.h>
+
+#include "lvgl/lvgl.h"
+#include "lv_drivers/display/fbdev.h"
+#include "lv_drivers/indev/evdev.h"
+#include "lv_demos/lv_demo.h"
+
+#define DISP_BUF_SIZE (128 * 1024)
+
+
+int main(void)
+{
+    lv_disp_drv_t               disp_drv;
+    lv_indev_drv_t              indev_drv;
+    static lv_color_t           buf[DISP_BUF_SIZE]; /* buffer for LVGL to draw the screen's content */
+    static lv_disp_draw_buf_t   disp_buf; /* Initialize a descriptor for the buffer */
+
+    /* LVGL context init */
+    lv_init();
+
+    /* Linux frame buffer device init */
+    fbdev_init();
+
+    /* linux touchscreen device init */
+    lv_indev_drv_init(&indev_drv);
+    indev_drv.type =LV_INDEV_TYPE_POINTER;
+    indev_drv.read_cb =evdev_read;
+    lv_indev_drv_register(&indev_drv);
+
+    /* Initialize and register a display driver */
+    lv_disp_draw_buf_init(&disp_buf, buf, NULL, DISP_BUF_SIZE);
+    lv_disp_drv_init(&disp_drv);
+    disp_drv.draw_buf   = &disp_buf;
+    disp_drv.flush_cb = fbdev_flush;
+    disp_drv.hor_res    = 800;
+    disp_drv.ver_res    = 480;
+    lv_disp_drv_register(&disp_drv);
+
+    /* Create a Demo */
+    //lv_demo_widgets();
+    lv_demo_music();
+    //lv_demo_keypad_encoder();
+    //lv_demo_stress();
+
+    /* Handle LitlevGL tasks (tickless mode) */
+    while(1) {
+        lv_task_handler();
+        usleep(5000);
+    }
+
+    return 0;
+}
+
+/* Set in lv_conf.h as LV_TICK_CUSTOM_SYS_TIME_EXPR */
+uint32_t millis(void)
+{
+    static uint64_t start_ms = 0;
+    struct timeval tv_start;
+    struct timeval tv_now;
+    uint64_t now_ms;
+    uint32_t time_ms;
+
+    if(start_ms == 0) 
+    {
+        gettimeofday(&tv_start, NULL);
+        start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000;
+    }
+
+    gettimeofday(&tv_now, NULL);
+    now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000;
+
+    time_ms = now_ms - start_ms;
+    return time_ms;
+}

--
Gitblit v1.9.1