custom_cmd_service 添加 优先执行指令下达接口
authorSnickerSun <snickersun@163.com>
Sun, 20 Oct 2024 05:13:57 +0000 (13:13 +0800)
committerSnickerSun <snickersun@163.com>
Sun, 20 Oct 2024 05:13:57 +0000 (13:13 +0800)
code/sdk/drivers/peripheral/utils/custom_cmd_service.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 475b94b..22885b2 100644 (file)
@@ -86,6 +86,35 @@ errcode_t do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen)
     }
     return ERRCODE_SUCC;
 }
+errcode_t do_custom_cmd_service_check_msg_head(int cmd, void *params, int paramlen)
+{
+    int ret;
+
+    if (g_custom_cmd_queue_created == 0 ) return ERRCODE_FAIL;
+    // 检查参数长度是否合法
+    if (paramlen > sizeof(custom_cmd_cmd_t) - sizeof(uint8_t))
+    {
+        PRINT("Error: 参数长度超过最大限制! \r\n");
+        return ERRCODE_FAIL;
+    }
+
+    custom_cmd_cmd_t mail = {0};
+    mail.cmd = (uint8_t)cmd;
+
+    // 将参数数据复制到结构体中
+    if (params && paramlen > 0)
+    {
+        memcpy(mail.data, params, paramlen);
+    }
+
+    ret = osal_msg_queue_write_head_copy(g_custom_cmd_queue, (void *)&mail, sizeof(custom_cmd_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_cmd_service_check_task(void const *arg)
 {
index a6ae29b..94e1401 100644 (file)
@@ -236,6 +236,7 @@ typedef enum {
 
 errcode_t uapi_custom_cmd_service_init(void);
 errcode_t do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen);
+errcode_t do_custom_cmd_service_check_msg_head(int cmd, void *params, int paramlen);
 
 /***custom file operate cmd service*/
 #define CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE 0x01 //运动数据