From 4975dc8db475795a439c484ec260a6890f196348 Mon Sep 17 00:00:00 2001
From: Lucker <gqpeng@listenai.com>
Date: Thu, 27 Jun 2024 11:59:58 +0800
Subject: [PATCH] =?UTF-8?q?samples:=20driver:=20display=5Fkscan:=20?=
 =?UTF-8?q?=E9=80=82=E9=85=8D=E5=A4=9A=E6=A8=A1=E6=80=81=E6=9D=BF=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 samples/driver/display_kscan/CMakeLists.txt   |  4 +-
 samples/driver/display_kscan/README.rst       | 49 +++++++++++++++++--
 .../boards/csk6011a_nano.overlay              |  2 -
 samples/driver/display_kscan/prj.conf         |  2 +
 samples/driver/display_kscan/sample.yaml      |  4 +-
 samples/driver/display_kscan/src/main.c       | 12 +++--
 6 files changed, 60 insertions(+), 13 deletions(-)

diff --git a/samples/driver/display_kscan/CMakeLists.txt b/samples/driver/display_kscan/CMakeLists.txt
index eed81e0566..886028479c 100644
--- a/samples/driver/display_kscan/CMakeLists.txt
+++ b/samples/driver/display_kscan/CMakeLists.txt
@@ -2,7 +2,7 @@
 
 cmake_minimum_required(VERSION 3.20.0)
 
-set(SUPPORT_BOARDS csk6012_nano csk6011a_nano)
+set(SUPPORT_BOARDS csk6012_nano csk6011a_nano csk6_duomotai_devkit)
 if(NOT ${BOARD} IN_LIST SUPPORT_BOARDS)
     message("Please choose one of the following boards:")
     foreach(item ${SUPPORT_BOARDS})
@@ -15,3 +15,5 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
 project(display)
 
 target_sources(app PRIVATE src/main.c)
+
+
diff --git a/samples/driver/display_kscan/README.rst b/samples/driver/display_kscan/README.rst
index de8429cda4..5c52daf7d4 100644
--- a/samples/driver/display_kscan/README.rst
+++ b/samples/driver/display_kscan/README.rst
@@ -1,5 +1,48 @@
-.. _display-sample:
+简介
+=====================
 
-Display Sample
-##############
+本文演示了如何在Zephyr RTOS中使用显示驱动和键盘扫描设备。运行该代码后,将在屏幕上显示图形,并通过日志输出响应触摸按键事件。
+
+构建步骤
+=====================
+
+lisa zep build -b csk6_duomotai_devkit ./samples/driver/display_kscan/ -p
+
+功能说明
+=====================
+
+1. 获取显示设备句柄
+
+::
+
+    display_dev = DEVICE_DT_GET(DT_INST(0, sitronix_st7789v));
+
+2. 获取显示设备能力
+
+::
+
+    display_get_capabilities(display_dev, &capabilities);
+
+3. 初始化键盘扫描设备
+
+::
+
+    kscan_init();
+
+4. 填充缓冲区并写入显示设备
+
+::
+
+    fill_buffer_fnc(TOP_LEFT, 0, buf, buf_size);
+    display_write(display_dev, x, y, &buf_desc, buf);
+
+5. 打开显示设备的显示
+
+::
+
+    display_blanking_off(display_dev);
+
+运行
+======================
+按下开发板复位按钮,运行程序。程序将初始化显示设备和键盘扫描设备,在显示屏上绘制彩色方块,并响应触摸按键事件。
 
diff --git a/samples/driver/display_kscan/boards/csk6011a_nano.overlay b/samples/driver/display_kscan/boards/csk6011a_nano.overlay
index cca288adce..b448237281 100644
--- a/samples/driver/display_kscan/boards/csk6011a_nano.overlay
+++ b/samples/driver/display_kscan/boards/csk6011a_nano.overlay
@@ -88,5 +88,3 @@
 		int-gpios = <&gpiob 11 0>;
 	};
 };
-
-
diff --git a/samples/driver/display_kscan/prj.conf b/samples/driver/display_kscan/prj.conf
index 8394e87bbe..1abc7ef5d3 100644
--- a/samples/driver/display_kscan/prj.conf
+++ b/samples/driver/display_kscan/prj.conf
@@ -11,3 +11,5 @@ CONFIG_KSCAN=y
 CONFIG_I2C=y
 CONFIG_KSCAN_FT5336=y
 CONFIG_KSCAN_FT5336_INTERRUPT=y
+
+
diff --git a/samples/driver/display_kscan/sample.yaml b/samples/driver/display_kscan/sample.yaml
index d80248a53f..77f7c11c68 100644
--- a/samples/driver/display_kscan/sample.yaml
+++ b/samples/driver/display_kscan/sample.yaml
@@ -3,11 +3,11 @@ sample:
   name: display_sample
 tests:
   sample.board.csk6.display.kscan:
-    platform_allow: csk6011a_nano
+    platform_allow: csk6011a_nano csk6_duomotai_devkit
     tags: csk6
     harness: console
     harness_config:
       fixture: display_st7789_ft5336
       type: one_line
       regex:
-        - "Display sample for"
\ No newline at end of file
+        - "Display sample for"
diff --git a/samples/driver/display_kscan/src/main.c b/samples/driver/display_kscan/src/main.c
index 314bc61156..3b76f2fb39 100644
--- a/samples/driver/display_kscan/src/main.c
+++ b/samples/driver/display_kscan/src/main.c
@@ -59,7 +59,7 @@ LOG_MODULE_REGISTER(sample, LOG_LEVEL_INF);
 #ifdef CONFIG_ARCH_POSIX
 #define RETURN_FROM_MAIN(exit_code) posix_exit_main(exit_code)
 #else
-#define RETURN_FROM_MAIN(exit_code) return
+#define RETURN_FROM_MAIN(exit_code) return exit_code
 #endif
 
 enum corner {
@@ -213,7 +213,7 @@ static void fill_buffer_mono(enum corner corner, uint8_t grey, uint8_t *buf, siz
 	memset(buf, color, buf_size);
 }
 
-void main(void)
+int main(void)
 {
 	size_t x;
 	size_t y;
@@ -236,7 +236,7 @@ void main(void)
 
 	if (display_dev == NULL) {
 		LOG_ERR("Device not found. Aborting sample.");
-		RETURN_FROM_MAIN(1);
+		RETURN_FROM_MAIN(-1);
 	}
 
 	display_get_capabilities(display_dev, &capabilities);
@@ -291,14 +291,14 @@ void main(void)
 		break;
 	default:
 		LOG_ERR("Unsupported pixel format. Aborting sample.");
-		RETURN_FROM_MAIN(1);
+		RETURN_FROM_MAIN(-1);
 	}
 
 	buf = k_malloc(buf_size);
 
 	if (buf == NULL) {
 		LOG_ERR("Could not allocate memory. Aborting sample.");
-		RETURN_FROM_MAIN(1);
+		RETURN_FROM_MAIN(-1);
 	}
 
 	(void)memset(buf, 0xFFu, buf_size);
@@ -351,3 +351,5 @@ void main(void)
 
 	RETURN_FROM_MAIN(0);
 }
+
+
-- 
GitLab