From 8fd218c2ae5519cee8b8e619910c8d17885119be Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 30 Jul 2026 20:36:44 +0800 Subject: [PATCH] up --- MSOS_ESP/main/CMakeLists.txt | 2 +- MSOS_ESP/main/hello_world_main.c | 2 +- MSOS_ESP/main/moonshineOS_core/cli.c | 23 +++++++++++++++++++++-- MSOS_ESP/main/moonshineOS_core/cli.h | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/MSOS_ESP/main/CMakeLists.txt b/MSOS_ESP/main/CMakeLists.txt index e1ff33b..2c4d7ab 100644 --- a/MSOS_ESP/main/CMakeLists.txt +++ b/MSOS_ESP/main/CMakeLists.txt @@ -1,3 +1,3 @@ idf_component_register(SRCS "hello_world_main.c" "iic.c" "oled.c" "state.c" "tca9535.c" "moonshineOS_core/cli.c" - PRIV_REQUIRES spi_flash esp_driver_i2c log + PRIV_REQUIRES spi_flash esp_driver_i2c esp_driver_uart log INCLUDE_DIRS "." "moonshineOS_core") diff --git a/MSOS_ESP/main/hello_world_main.c b/MSOS_ESP/main/hello_world_main.c index 8f8872c..2db939f 100644 --- a/MSOS_ESP/main/hello_world_main.c +++ b/MSOS_ESP/main/hello_world_main.c @@ -53,7 +53,7 @@ void app_main(void) tca9535_init(); oled_init(); cli_init(); - //cli_run(); + cli_start(); while(1){ vTaskDelay(1000 / portTICK_PERIOD_MS); } diff --git a/MSOS_ESP/main/moonshineOS_core/cli.c b/MSOS_ESP/main/moonshineOS_core/cli.c index a7e0e68..7a2bd84 100644 --- a/MSOS_ESP/main/moonshineOS_core/cli.c +++ b/MSOS_ESP/main/moonshineOS_core/cli.c @@ -3,10 +3,16 @@ #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" +#include "driver/uart.h" +#include "driver/uart_vfs.h" #include "iic.h" -#define CLI_LINE_MAX 256 -#define CLI_MAX_ARGS 16 +#define CLI_LINE_MAX 256 +#define CLI_MAX_ARGS 16 +#define CLI_TASK_STACK 4096 +#define CLI_TASK_PRIO 5 +#define CLI_UART_NUM UART_NUM_0 +#define CLI_UART_RX_BUF 256 typedef int (*cli_cmd_func_t)(int argc, char **argv); @@ -55,6 +61,7 @@ static int read_line(char *buf, int maxlen) while (i < maxlen - 1) { int c = getchar(); if (c < 0) { + clearerr(stdin); vTaskDelay(1); continue; } @@ -101,6 +108,18 @@ void cli_init(void) { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); + uart_driver_install(CLI_UART_NUM, CLI_UART_RX_BUF, 0, 0, NULL, 0); + uart_vfs_dev_use_driver(CLI_UART_NUM); +} + +static void cli_task(void *arg) +{ + cli_run(); +} + +void cli_start(void) +{ + xTaskCreate(cli_task, "cli", CLI_TASK_STACK, NULL, CLI_TASK_PRIO, NULL); } void cli_run(void) diff --git a/MSOS_ESP/main/moonshineOS_core/cli.h b/MSOS_ESP/main/moonshineOS_core/cli.h index 2888c8b..7dcc894 100644 --- a/MSOS_ESP/main/moonshineOS_core/cli.h +++ b/MSOS_ESP/main/moonshineOS_core/cli.h @@ -3,5 +3,6 @@ void cli_init(void); void cli_run(void); +void cli_start(void); #endif