From d15a2628db666385bced7992121eb5271f84e176 Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Thu, 3 Oct 2024 15:53:00 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0custom=20fileoperate=E6=96=87?= =?utf8?q?=E4=BB=B6=E8=AF=BB=E5=86=99=E4=B8=93=E7=94=A8=E9=98=9F=E5=88=97?= =?utf8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../brandy/brandy_standard/thread_pri_init.c | 2 +- .../drivers/peripheral/utils/CMakeLists.txt | 1 + .../utils/custom_fileoperate_service.c | 157 ++++++++++++++++++ .../drivers/peripheral/utils/custom_utils.h | 7 + 4 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c index 5af185110..8a6dba82c 100755 --- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c @@ -457,7 +457,7 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG); uapi_custom_cmd_service_init(); - + uapi_custom_fileoperate_service_init(); diff --git a/code/sdk/drivers/peripheral/utils/CMakeLists.txt b/code/sdk/drivers/peripheral/utils/CMakeLists.txt index f91087ff2..da240fa01 100644 --- a/code/sdk/drivers/peripheral/utils/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/utils/CMakeLists.txt @@ -7,6 +7,7 @@ set(COMPONENT_NAME "custom_utils") set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/custom_utils.c ${CMAKE_CURRENT_SOURCE_DIR}/custom_utils_at_cmd.c + ${CMAKE_CURRENT_SOURCE_DIR}/custom_fileoperate_service.c ${CMAKE_CURRENT_SOURCE_DIR}/custom_cmd_service.c ${CMAKE_CURRENT_SOURCE_DIR}/custom_runtime.c ${CMAKE_CURRENT_SOURCE_DIR}/pdu.c diff --git a/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c b/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c new file mode 100644 index 000000000..1449dee47 --- /dev/null +++ b/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c @@ -0,0 +1,157 @@ +/** + * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n + * + * Description: Test adc source \n + * Author: @CompanyNameTag \n + * History: \n + * 2022-08-16, Create file. \n + */ +#include "pinctrl.h" +#include "debug_print.h" +#include "soc_osal.h" +#include "tcxo.h" +#include "irmalloc.h" +#include "errcode.h" +#include "common_def.h" + +#include "chip_core_irq.h" +#include "chip_io.h" +#include "gpio.h" +#include "pm_veto.h" + +#include "rtc.h" +#include "timer.h" +#include "systick.h" + +#include "tcxo.h" + +#include "cmsis_os2.h" + +#include "los_printf.h" + +#include "custom_utils.h" + +#include "BluetoothModelC.h" + +#include "PhoneServiceC.h" + +#include "ui_serviceC.h" + +#include "bletest.h" + +#include "safemodemanager/include/SafeModeManagerModelC.h" + +typedef struct +{ + uint8_t cmd; + uint8_t data[5]; +} custom_fileoperate_cmd_t; +/*** + * 其他cmd在Header里定义,对外开放 + */ + +static bool g_bat_timer_is_running = false; +static unsigned long g_custom_fileoperate_queue; +static bool g_custom_fileoperate_queue_created = 0; +static bool custom_fileoperate_service_running_stat = false; + +errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int paramlen) +{ + int ret; + + if (g_custom_fileoperate_queue_created == 0 ) return ERRCODE_FAIL; + // 检查参数长度是否合法 + if (paramlen > sizeof(custom_fileoperate_cmd_t) - sizeof(uint8_t)) + { + PRINT("Error: 参数长度超过最大限制! \r\n"); + return ERRCODE_FAIL; + } + + custom_fileoperate_cmd_t mail = {0}; + mail.cmd = (uint8_t)cmd; + + // 将参数数据复制到结构体中 + if (params && paramlen > 0) + { + memcpy(mail.data, params, paramlen); + } + + ret = osal_msg_queue_write_copy(g_custom_fileoperate_queue, (void *)&mail, sizeof(custom_fileoperate_cmd_t), 0); + if (ret != OSAL_SUCCESS) + { + PRINT("Error custom_cmd Check MSG 0x%02X send failed! err=0x%x! \r\n", cmd, ret); + return ERRCODE_FAIL; + } + return ERRCODE_SUCC; +} + +static void custom_fileoperate_service_check_task(void const *arg) +{ + + int32_t ret; + custom_fileoperate_cmd_t mail; + uint32_t msgsize = (uint32_t)sizeof(custom_fileoperate_cmd_t); + custom_fileoperate_service_running_stat = true; + int code=0; + + while (1) + { + ret = osal_msg_queue_read_copy(g_custom_fileoperate_queue, (void *)&mail, &msgsize, + OSAL_MSGQ_WAIT_FOREVER); + if (ret != OSAL_SUCCESS) + { + continue; + } + + // 根据邮件中的命令进行相应的处理 + switch (mail.cmd) + { + case CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE: + break; + + default: + PRINT("Unknown CUSTOM_FILE_OPERATE_MSG cmd 0x%02X \r\n", mail.cmd); + break; + } + } +} +#define CUSTOM_FILE_OPERATE_APP_BOARD_MSG_COUNT 10 +#define CUSTOM_FILE_OPERATE_APP_BOARD_TASK_SIZE 0x1000 +#define CUSTOM_FILE_OPERATE_BOARD_TASK_PRIO 7 +void create_custom_fileoperate_queue(void) +{ + if (osal_msg_queue_create("custom_fileoperate_service_queue", CUSTOM_FILE_OPERATE_APP_BOARD_MSG_COUNT, &g_custom_fileoperate_queue, + 0, sizeof(custom_fileoperate_cmd_t)) != ERRCODE_SUCC) + { + printf("[custom_cmd][service] app create mail fail\n"); + g_custom_fileoperate_queue_created = 0; + }else{ + g_custom_fileoperate_queue_created = 1; + } +} +errcode_t uapi_custom_fileoperate_service_init(void) +{ + + PRINT("uapi_custom_fileoperate_service_init !\r\n"); + app_task_definition_t taskcfg = {0}; + taskcfg.create_queue_handle = create_custom_fileoperate_queue; + taskcfg.attr.name = "custom_fileoperate_service"; + taskcfg.attr.priority = osPriorityNormal; + taskcfg.attr.stack_size = CUSTOM_FILE_OPERATE_APP_BOARD_TASK_SIZE; + taskcfg.func = custom_fileoperate_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret = uapi_create_osThread_custom(&taskcfg); + if (ret != ERRCODE_SUCC) + { + PRINT("create custom_fileoperate_service failed %d!\r\n", ret); + return ERRCODE_FAIL; + } + + // g_custom_fileoperate_service_timer = osTimerNew((osTimerFunc_t)custom_fileoperate_service_check_timer_callback, osTimerPeriodic, NULL, NULL); + + // do_custom_fileoperate_service_check_msg(CUSTOM_FILE_OPERATE_SERVICE_CMD_START_CHECK, NULL); + + return ERRCODE_SUCC; +} + diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index a1068b425..e0efd533e 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -231,6 +231,13 @@ typedef enum { errcode_t uapi_custom_cmd_service_init(void); errcode_t do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen); + +/***custom file operate cmd service*/ +#define CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE 0x01 +errcode_t uapi_custom_fileoperate_service_init(void); +errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int paramlen); + + int uapi_delete_files(const char *file_path); void uapi_restore_factory_setting(void); -- 2.17.1