AT^TASKSWITCHPRINT=1时添加AT^TASKSILENTADD, AT^TASKSILENTDEL, AT^TASKSILENTSHOW 三个指令方便调试功耗
author孙春阳 <snickersun@163.com>
Tue, 21 Oct 2025 03:10:01 +0000 (11:10 +0800)
committer孙春阳 <snickersun@163.com>
Tue, 21 Oct 2025 03:10:01 +0000 (11:10 +0800)
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/application/wstp/at_service/app/app_cmd_manager.c
code/sdk/application/wstp/at_service/app/app_msg_manager.h
code/sdk/kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/kernel/base/sched/sched_sq/los_sched.c

index 3ab7553..e1f654e 100644 (file)
@@ -1351,6 +1351,61 @@ uint32_t mcu_task_switch_print_ctrl(uint8_t *para, uint32_t para_len)
     return ERRCODE_SUCC;
 }
 
+uint32_t mcu_task_silent_add(uint8_t *para, uint32_t para_len)
+{
+    unused(para_len);
+    
+    if (para == NULL) {
+        wstp_print("Usage: AT^TASKSILENTADD=<task_id>\r\n");
+        wstp_print("  task_id: Task ID to add to silent list\r\n");
+        return ERRCODE_FAIL;
+    }
+
+    uint32_t task_id = atoi((char*)para);
+    
+    extern void silent_task_id_add(uint32_t task_id);
+    silent_task_id_add(task_id);
+    
+    wstp_print("Task ID %u added to silent list\r\n", task_id);
+    
+    return ERRCODE_SUCC;
+}
+
+uint32_t mcu_task_silent_del(uint8_t *para, uint32_t para_len)
+{
+    unused(para_len);
+    
+    if (para == NULL) {
+        wstp_print("Usage: AT^TASKSILENTDEL=<task_id>\r\n");
+        wstp_print("  task_id: Task ID to remove from silent list\r\n");
+        return ERRCODE_FAIL;
+    }
+
+    uint32_t task_id = atoi((char*)para);
+    
+    extern void silent_task_id_remove(uint32_t task_id);
+    silent_task_id_remove(task_id);
+    
+    wstp_print("Task ID %u removed from silent list\r\n", task_id);
+    
+    return ERRCODE_SUCC;
+}
+
+uint32_t mcu_task_silent_show(uint8_t *para, uint32_t para_len)
+{
+    unused(para);
+    unused(para_len);
+    
+    wstp_print("========== Silent Task ID List ==========\r\n");
+    
+    extern void silent_task_id_dump(void);
+    silent_task_id_dump();
+    
+    wstp_print("=========================================\r\n");
+    
+    return ERRCODE_SUCC;
+}
+
 uint32_t mcu_pm_cldo1_power_down(uint8_t *para, uint32_t para_len)
 {
     unused(para);
@@ -2922,6 +2977,9 @@ static const app_process_table g_app_funcs[] = {
 #ifdef CFG_DRIVERS_SDIO
     { SDIOTEST,            mcu_sdio_test},
 #endif
+    { TASKSILENTADD,       mcu_task_silent_add },
+    { TASKSILENTDEL,       mcu_task_silent_del },
+    { TASKSILENTSHOW,      mcu_task_silent_show },
 };
 
 void app_at_process(uint8_t *data, uint32_t data_len)
index 1bc3008..b73a973 100644 (file)
@@ -409,6 +409,38 @@ static uint32_t app_test_task_switch_print(uint8_t *para, uint32_t para_len, cha
     return ERRCODE_SUCC;\r
 }\r
 \r
+static uint32_t app_task_silent_add(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    app_pkg_msg_send(TASKSILENTADD, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_task_silent_del(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    app_pkg_msg_send(TASKSILENTDEL, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_task_silent_show(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    unused(para);\r
+    unused(para_len);\r
+\r
+    app_pkg_msg_send(TASKSILENTSHOW, DIAG_CONTROL_FALSE, NULL, 0);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
 static uint32_t app_test_pm_lcd_off(uint8_t *para, uint32_t para_len, char *str_cmd)\r
 {\r
     unused(str_cmd);\r
@@ -1234,6 +1266,9 @@ static const at_cmd_table_t g_app_cmd[] = {
 #ifdef CFG_DRIVERS_SDIO\r
     { "AT^SDIOTEST",  app_sdio_test,   "" },\r
 #endif\r
+    { "AT^TASKSILENTADD",  app_task_silent_add,   "" },\r
+    { "AT^TASKSILENTDEL",  app_task_silent_del,   "" },\r
+    { "AT^TASKSILENTSHOW", app_task_silent_show,  "" },\r
 };\r
 \r
 at_cmd_table_t *get_app_cmd_table(uint32_t *cmd_count)\r
index 286ac96..5407a13 100644 (file)
@@ -119,6 +119,9 @@ typedef enum {
     SDIOTEST            = 0x58,\r
     PMVETOGET           = 0x59,  // 新增:获取PM投票信息\r
     TASKSWITCHPRINT     = 0x5A,  // 新增:控制任务切换打印\r
+    TASKSILENTADD       = 0x5B,  // 新增:添加静默任务ID\r
+    TASKSILENTDEL       = 0x5C,  // 新增:删除静默任务ID\r
+    TASKSILENTSHOW      = 0x5D,  // 新增:显示静默任务列表\r
     MSG_ID_MAX_BUTT,\r
 } app_msg_id;\r
 \r
index 537023e..c3306cb 100644 (file)
@@ -42,6 +42,7 @@
 
 /* 全局变量:控制任务切换打印开关(默认关闭)*/
 static volatile UINT32 g_taskSwitchPrintEnable = 0;
+UINT32 silent_task_id_list[24] = {0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF};
 
 /* 获取任务切换打印开关状态 */
 UINT32 OsTaskSwitchPrintIsEnabled(VOID)
@@ -60,6 +61,46 @@ VOID OsTaskSwitchPrintSetEnable(UINT32 enable)
     }
 }
 
+BOOL task_id_is_silent(UINT32 task_id)
+{
+    for (int i = 0; i < 24; i++) {
+        if (silent_task_id_list[i] == task_id) {
+            return TRUE;
+        }
+    }    
+    return FALSE;
+}
+void silent_task_id_dump(VOID)
+{
+    for (int i = 0; i < 24; i++) {
+        if (silent_task_id_list[i] != 0xFFFFFFFF) {
+            printf("silent_task_id_list[%d] = %u\n", i, silent_task_id_list[i]);
+        }
+    }
+}
+void silent_task_id_add(UINT32 task_id)
+{
+    if(task_id_is_silent(task_id)) {
+        return;
+    }
+    for (int i = 0; i < 24; i++) {
+        if (silent_task_id_list[i] == 0xFFFFFFFF) {
+            silent_task_id_list[i] = task_id;
+            break;
+        }
+    }
+}
+void silent_task_id_remove(UINT32 task_id)
+{
+    for (int i = 0; i < 24; i++) {
+        if (silent_task_id_list[i] == task_id) {
+            silent_task_id_list[i] = 0xFFFFFFFF;
+            break;
+        }
+    }
+}
+
+
 VOID OsSchedResched(VOID)
 {
     LosTaskCB *runTask = NULL;
@@ -94,11 +135,13 @@ VOID OsSchedResched(VOID)
 
     /* 任务切换打印(由全局开关控制)*/
     if (g_taskSwitchPrintEnable) {
-        const char *runTaskName = (runTask->taskName != NULL) ? runTask->taskName : "NULL";
-        const char *newTaskName = (newTask->taskName != NULL) ? newTask->taskName : "NULL";
-        printf("[TASK_SWITCH] %s(ID:%u) -> %s(ID:%u)\n", 
-              runTaskName, runTask->taskId, 
-              newTaskName, newTask->taskId);
+        if (!(task_id_is_silent(runTask->taskId) || task_id_is_silent(newTask->taskId))) {
+            const char *runTaskName = (runTask->taskName != NULL) ? runTask->taskName : "NULL";
+            const char *newTaskName = (newTask->taskName != NULL) ? newTask->taskName : "NULL";
+            printf("[TASK_SWITCH] %s(ID:%u) -> %s(ID:%u)\n", 
+                runTaskName, runTask->taskId, 
+                newTaskName, newTask->taskId);
+        }
     }
 
     OsTaskTimeUpdateHook(runTask->taskId);