添加custom fileoperate文件读写专用队列。 1084/1 1084/head 1085/target/1 1086/target/1
authorSnickerSun <snickersun@163.com>
Thu, 3 Oct 2024 07:53:00 +0000 (15:53 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 3 Oct 2024 07:53:00 +0000 (15:53 +0800)
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/drivers/peripheral/utils/CMakeLists.txt
code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c [new file with mode: 0644]
code/sdk/drivers/peripheral/utils/custom_utils.h

index 5af1851..8a6dba8 100755 (executable)
@@ -457,7 +457,7 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG);
 \r
     uapi_custom_cmd_service_init();\r
 \r
-\r
+    uapi_custom_fileoperate_service_init();\r
 \r
 \r
 \r
index f91087f..da240fa 100644 (file)
@@ -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 (file)
index 0000000..1449dee
--- /dev/null
@@ -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;
+}
+
index a1068b4..e0efd53 100644 (file)
@@ -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);