diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 853037d..2b167b8 100755
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -14,6 +14,7 @@ idf_component_register(
"utilities/u8g2/src"
"utilities/u8g2/port"
"services/display_service"
+ "components/screen_pages/test_page"
EXCLUDE_SRCS
"utilities/imp_util_ring_queue/ring_queue_test.c"
@@ -34,6 +35,7 @@ idf_component_register(
"utilities/u8g2/src"
"utilities/u8g2/port"
"services/display_service"
+ "components/screen_pages/test_page"
LDFRAGMENTS
"utilities/letter_shell/port/esp-idf/shell.lf"
diff --git a/main/components/screen_pages/README.md b/main/components/screen_pages/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/main/components/screen_pages/test_page/test_page.c b/main/components/screen_pages/test_page/test_page.c
new file mode 100644
index 0000000..2c4195c
--- /dev/null
+++ b/main/components/screen_pages/test_page/test_page.c
@@ -0,0 +1,250 @@
+/**
+ * @file test_page.c
+ * @author Alvin Young (impressionyang@outlook.com)
+ * @brief
+ * @version 0.1
+ * @date 2025-03-22
+ *
+ * _ _
+ * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _
+ * / / ' \/ _ \/ __/ -_|_-<(_- / _ \/ _ \/ // / _ `/ _ \/ _ `/
+ * /_/_/_/_/ .__/_/ \__/___/___/_/\___/_//_/\_, /\_,_/_//_/\_, /
+ * /_/ /___/ /___/
+ * @copyright Copyright (c) 2025 impressionyang
+ *
+ * @par 修改日志:
+ *
+ * | Date | Version | Author | Description
+ * |
|---|
| 2025-03-22 | v1.0 | Alvin Young | 首次创建
+ * |
+ *
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+/* Includes ------------------------------------------------------------------*/
+#include "test_page.h"
+/* define --------------------------------------------------------------------*/
+/* typedef -------------------------------------------------------------------*/
+/* variables -----------------------------------------------------------------*/
+/* Private function(only *.c) -----------------------------------------------*/
+/* Exported functions --------------------------------------------------------*/
+
+static void draw(u8g2_t* u8g2)
+{
+ // Layer 1
+ u8g2_SetFont(u8g2, u8g2_font_profont29_tr);
+ u8g2_DrawStr(u8g2, 19, 40, "12:00");
+
+ // Layer 2
+ u8g2_SetFont(u8g2, u8g2_font_profont17_tr);
+ u8g2_DrawStr(u8g2, 101, 40, "00");
+
+ // Layer 3
+ u8g2_SetFont(u8g2, u8g2_font_helvB08_tr);
+ u8g2_DrawStr(u8g2, 105, 49, "PM");
+
+ // Layer 4
+ u8g2_DrawLine(u8g2, 13, 23, 21, 15);
+
+ // Layer 5
+ u8g2_DrawLine(u8g2, 21, 15, 99, 15);
+
+ // Layer 6
+ u8g2_DrawLine(u8g2, 99, 15, 109, 23);
+
+ // Layer 7
+ u8g2_DrawLine(u8g2, 109, 23, 119, 23);
+
+ // Layer 9
+ u8g2_DrawLine(u8g2, 119, 23, 122, 26);
+
+ // Layer 10
+ u8g2_DrawLine(u8g2, 122, 26, 122, 48);
+
+ // Layer 11
+ u8g2_DrawLine(u8g2, 122, 48, 116, 54);
+
+ // Layer 12
+ u8g2_DrawLine(u8g2, 115, 54, 68, 54);
+
+ // Layer 14
+ u8g2_DrawLine(u8g2, 13, 24, 13, 44);
+
+ // Layer 16
+ u8g2_DrawLine(u8g2, 14, 45, 58, 45);
+
+ // Layer 17
+ u8g2_DrawLine(u8g2, 59, 45, 68, 54);
+
+ // Layer 17
+ u8g2_DrawLine(u8g2, 96, 43, 107, 54);
+
+ // Layer 18
+ u8g2_DrawLine(u8g2, 58, 45, 60, 43);
+
+ // Layer 19
+ u8g2_DrawLine(u8g2, 61, 43, 95, 43);
+
+ // Layer 19
+ u8g2_DrawFrame(u8g2, 0, 0, 128, 64);
+
+ // Layer 20
+ u8g2_SetDrawColor(u8g2, 2);
+ u8g2_SetFont(u8g2, u8g2_font_helvB08_tr);
+ u8g2_DrawStr(u8g2, 73, 53, "Sun");
+
+ // Layer 21
+ u8g2_SetDrawColor(u8g2, 1);
+ u8g2_SetFont(u8g2, u8g2_font_profont10_tr);
+ u8g2_DrawStr(u8g2, 12, 56, "01/01/2023");
+
+ // Layer 23
+ u8g2_DrawLine(u8g2, 68, 54, 63, 59);
+
+ // Layer 24
+ u8g2_DrawLine(u8g2, 7, 51, 7, 55);
+
+ // Layer 25
+ u8g2_DrawLine(u8g2, 0, 0, 0, 0);
+
+ // Layer 26
+ u8g2_DrawLine(u8g2, 11, 59, 63, 59);
+
+ // Layer 26
+ u8g2_DrawLine(u8g2, 13, 45, 7, 51);
+
+ // Layer 26
+ u8g2_DrawLine(u8g2, 0, 0, 0, 0);
+
+ // Layer 27
+ u8g2_DrawLine(u8g2, 7, 55, 11, 59);
+
+ // Layer 28
+ u8g2_SetDrawColor(u8g2, 2);
+ u8g2_DrawBox(u8g2, 68, 44, 30, 10);
+
+ // Layer 29
+ u8g2_SetDrawColor(u8g2, 1);
+ u8g2_DrawBox(u8g2, 60, 43, 9, 4);
+
+ // Layer 30 (copy)
+ u8g2_DrawFrame(u8g2, 64, 49, 7, 2);
+
+ // Layer 30
+ u8g2_DrawBox(u8g2, 62, 47, 6, 2);
+
+ // Layer 30 (copy)
+ u8g2_DrawFrame(u8g2, 64, 49, 7, 2);
+
+ // Layer 30 (copy)
+ u8g2_DrawFrame(u8g2, 64, 49, 7, 2);
+
+ // Layer 30 (copy)
+ u8g2_DrawFrame(u8g2, 64, 49, 4, 2);
+
+ // Layer 30 (copy) (copy)
+ u8g2_DrawFrame(u8g2, 66, 51, 3, 2);
+
+ // Layer 30 (copy) (copy)
+ u8g2_DrawFrame(u8g2, 66, 51, 7, 2);
+
+ // Layer 30 (copy) (copy)
+ u8g2_DrawFrame(u8g2, 97, 53, 10, 2);
+
+ // Layer 30 (copy) (copy)
+ u8g2_DrawFrame(u8g2, 66, 51, 7, 2);
+
+ // Layer 30 (copy) (copy) (copy)
+ u8g2_DrawFrame(u8g2, 95, 51, 10, 2);
+
+ // Layer 30 (copy) (copy) (copy)
+ u8g2_DrawFrame(u8g2, 99, 50, 4, 2);
+
+ // Layer 30 (copy) (copy) (copy)
+ u8g2_DrawFrame(u8g2, 97, 49, 6, 2);
+
+ // Layer 30 (copy) (copy) (copy)
+ u8g2_DrawFrame(u8g2, 97, 47, 4, 2);
+
+ // Layer 30 (copy) (copy) (copy)
+ u8g2_DrawFrame(u8g2, 95, 45, 4, 2);
+
+ // Layer 45
+ u8g2_DrawEllipse(u8g2, 5, 5, 2, 2, U8G2_DRAW_ALL);
+
+ // Layer 46
+ u8g2_DrawLine(u8g2, 5, 3, 5, 7);
+
+ // Layer 45 (copy)
+ u8g2_DrawEllipse(u8g2, 122, 5, 2, 2, U8G2_DRAW_ALL);
+
+ // Layer 45 (copy)
+ u8g2_DrawEllipse(u8g2, 5, 58, 2, 2, U8G2_DRAW_ALL);
+
+ // Layer 45 (copy)
+ u8g2_DrawEllipse(u8g2, 122, 58, 2, 2, U8G2_DRAW_ALL);
+
+ // Layer 50
+ u8g2_DrawLine(u8g2, 120, 5, 123, 5);
+
+ // Layer 51
+ u8g2_DrawLine(u8g2, 122, 56, 122, 59);
+
+ // Layer 52
+ u8g2_DrawLine(u8g2, 3, 58, 6, 58);
+
+ // Battery
+ u8g2_DrawXBM(u8g2, 89, 4, 26, 8, image_Battery_bits);
+
+ // Layer 53
+ u8g2_DrawBox(u8g2, 91, 6, 20, 4);
+
+ // Layer 54
+ u8g2_DrawFrame(u8g2, 11, 9, 51, 2);
+
+ // Layer 55
+ u8g2_DrawBox(u8g2, 62, 9, 25, 5);
+
+ // Layer 56
+ u8g2_DrawLine(u8g2, 59, 11, 61, 13);
+
+ // Layer 57
+ u8g2_DrawXBM(u8g2, 60, 11, 2, 2, image_Layer_57_bits);
+
+ // Layer 58
+ u8g2_DrawLine(u8g2, 55, 13, 4, 13);
+
+ // Layer 59
+ u8g2_DrawLine(u8g2, 16, 15, 4, 15);
+
+ // Layer 60
+ u8g2_DrawLine(u8g2, 13, 17, 4, 17);
+
+ // Layer 61
+ u8g2_DrawLine(u8g2, 9, 19, 4, 19);
+
+ // Layer 63
+ u8g2_DrawBox(u8g2, 11, 4, 2, 4);
+
+ // Layer 64
+ u8g2_DrawLine(u8g2, 0, 0, 0, 0);
+
+ // Layer 65
+ u8g2_SetDrawColor(u8g2, 2);
+ u8g2_DrawRBox(u8g2, 98, 26, 22, 17, 5);
+
+ // Layer 62 (copy) (copy) (copy)
+ u8g2_SetDrawColor(u8g2, 1);
+ u8g2_DrawLine(u8g2, 86, 3, 86, 13);
+}
+
+void test_page_draw_page(u8g2_t* u8g2)
+{
+ u8g2_ClearBuffer(u8g2);
+ u8g2_SetBitmapMode(u8g2, 1);
+ u8g2_SetFontMode(u8g2, 1);
+ draw(u8g2);
+ u8g2_SendBuffer(u8g2);
+}
+/*
+ * EOF
+ */
\ No newline at end of file
diff --git a/main/components/screen_pages/test_page/test_page.h b/main/components/screen_pages/test_page/test_page.h
new file mode 100644
index 0000000..b8149cc
--- /dev/null
+++ b/main/components/screen_pages/test_page/test_page.h
@@ -0,0 +1,38 @@
+/**
+ * @file test_page.h
+ * @author Alvin Young (impressionyang@outlook.com)
+ * @brief
+ * @version 0.1
+ * @date 2025-03-22
+ *
+ * _ _
+ * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _
+ * / / ' \/ _ \/ __/ -_|_-<(_- / _ \/ _ \/ // / _ `/ _ \/ _ `/
+ * /_/_/_/_/ .__/_/ \__/___/___/_/\___/_//_/\_, /\_,_/_//_/\_, /
+ * /_/ /___/ /___/
+ * @copyright Copyright (c) 2025 impressionyang
+ *
+ * @par 修改日志:
+ *
+ * | Date | Version | Author | Description
+ * |
|---|
| 2025-03-22 | v1.0 | Alvin Young | 首次创建
+ * |
+ *
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+/* Includes ------------------------------------------------------------------*/
+#include "u8g2.h"
+#include "u8x8.h"
+/* define --------------------------------------------------------------------*/
+/* typedef -------------------------------------------------------------------*/
+/* variables -----------------------------------------------------------------*/
+static const uint8_t image_Battery_bits[] = {0xfe,0xff,0x7f,0x00,0x01,0x00,0x80,0x00,0x01,0x00,0x80,0x03,0x01,0x00,0x80,0x02,0x01,0x00,0x80,0x02,0x01,0x00,0x80,0x03,0x01,0x00,0x80,0x00,0xfe,0xff,0x7f,0x00};
+static const uint8_t image_Layer_57_bits[] = {0x03,0x03};
+/* Private function(only *.c) -----------------------------------------------*/
+/* Exported functions --------------------------------------------------------*/
+
+void test_page_draw_page(u8g2_t *u8g2);
+void test_page_draw_page2(u8g2_t *u8g2);
+/*
+ * EOF
+ */
\ No newline at end of file
diff --git a/main/components/screen_pages/test_page/test_page2.c b/main/components/screen_pages/test_page/test_page2.c
new file mode 100644
index 0000000..1347f8f
--- /dev/null
+++ b/main/components/screen_pages/test_page/test_page2.c
@@ -0,0 +1,91 @@
+/**
+ * @file test_page2.c
+ * @author Alvin Young (impressionyang@outlook.com)
+ * @brief
+ * @version 0.1
+ * @date 2025-03-22
+ *
+ * _ _
+ * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _
+ * / / ' \/ _ \/ __/ -_|_-<(_- / _ \/ _ \/ // / _ `/ _ \/ _ `/
+ * /_/_/_/_/ .__/_/ \__/___/___/_/\___/_//_/\_, /\_,_/_//_/\_, /
+ * /_/ /___/ /___/
+ * @copyright Copyright (c) 2025 impressionyang
+ *
+ * @par 修改日志:
+ *
+ * | Date | Version | Author | Description
+ * |
|---|
| 2025-03-22 | v1.0 | Alvin Young | 首次创建
+ * |
+ *
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+/* Includes ------------------------------------------------------------------*/
+#include "test_page.h"
+/* define --------------------------------------------------------------------*/
+/* typedef -------------------------------------------------------------------*/
+/* variables -----------------------------------------------------------------*/
+/* Private function(only *.c) -----------------------------------------------*/
+/* Exported functions --------------------------------------------------------*/
+static const uint8_t image_wifi_75_bits[] = {
+ 0x80, 0x0f, 0x00, 0x60, 0x30, 0x00, 0x18, 0xc0, 0x00, 0x84, 0x0f, 0x01,
+ 0xe2, 0x3f, 0x02, 0xf1, 0x78, 0x04, 0x3a, 0xe7, 0x02, 0xdc, 0xdf, 0x01,
+ 0xe8, 0xb8, 0x00, 0x70, 0x77, 0x00, 0xa0, 0x2f, 0x00, 0xc0, 0x1d, 0x00,
+ 0x80, 0x0a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00
+};
+static const uint8_t image_download_bits[] = {
+ 0x80, 0x03, 0x00, 0x40, 0x02, 0x00, 0x20, 0x42, 0x00, 0x10, 0x82, 0x00,
+ 0x0f, 0x0a, 0x01, 0x01, 0x12, 0x01, 0x01, 0x22, 0x02, 0x01, 0x22, 0x02,
+ 0x01, 0x22, 0x02, 0x01, 0x12, 0x01, 0x0f, 0x0a, 0x01, 0x10, 0x82, 0x00,
+ 0x20, 0x42, 0x00, 0x40, 0x02, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00
+};
+static const uint8_t image_download_1_bits[] = {
+ 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00
+};
+
+static void draw(u8g2_t* u8g2)
+{
+ // wifi_75
+ u8g2_DrawXBM(u8g2, 6, 6, 19, 16, image_wifi_75_bits);
+
+ // Layer 2
+ u8g2_DrawFrame(u8g2, 2, 2, 124, 60);
+
+ // download
+ u8g2_DrawXBM(u8g2, 34, 6, 18, 16, image_download_bits);
+
+ // download
+ u8g2_DrawXBM(u8g2, 56, 5, 65, 18, image_download_1_bits);
+
+ // Layer 5
+ u8g2_DrawLine(u8g2, 29, 21, 29, 6);
+
+ // Layer 6
+ u8g2_DrawBox(u8g2, 58, 6, 25, 15);
+}
+
+void test_page_draw_page2(u8g2_t* u8g2)
+{
+ u8g2_ClearBuffer(u8g2);
+ u8g2_SetBitmapMode(u8g2, 1);
+ u8g2_SetFontMode(u8g2, 1);
+
+ draw(u8g2);
+ u8g2_SendBuffer(u8g2);
+}
+/*
+ * EOF
+ */
\ No newline at end of file
diff --git a/main/services/display_service/display_service.c b/main/services/display_service/display_service.c
index 64442e1..2fe8ec5 100644
--- a/main/services/display_service/display_service.c
+++ b/main/services/display_service/display_service.c
@@ -33,6 +33,7 @@
#include "esp_log.h"
+#include "test_page.h"
/* define --------------------------------------------------------------------*/
/* typedef -------------------------------------------------------------------*/
/* variables -----------------------------------------------------------------*/
@@ -40,6 +41,7 @@
static imp_msg_queue_t* msg_q_handle = NULL;
static u8g2_t u8g2;
char build_time[100] = { 0 };
+
/* Private function(only *.c) -----------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
@@ -80,6 +82,22 @@ void imp_display_service_task(void*)
u8g2_DrawStr(&u8g2, 0, 64, build_time);
u8g2_SendBuffer(&u8g2); // 一定要发送buffer
break;
+ case 3:
+ test_page_draw_page(&u8g2);
+ break;
+ case 4:
+ test_page_draw_page2(&u8g2);
+ break;
+ case 5: {
+ static int w = 0;
+ u8g2_SetDrawColor(&u8g2, 0);
+ u8g2_DrawBox(&u8g2, 58, 6, 62, 16);
+ u8g2_SetDrawColor(&u8g2, 0xFF);
+ u8g2_DrawBox(&u8g2, 58, 6, w * 5 + 2, 16);
+ u8g2_SendBuffer(&u8g2);
+ w = (w + 1) % 13;
+ cdc_printf("width : %d\r\n", w);
+ } break;
}
}
vTaskDelay(1 / portTICK_PERIOD_MS);