添加任务提醒at测试指令,待ui逻辑补充 2380/1 2380/head 2381/target/1
authorluozheng <1732036298@qq.com>
Wed, 24 Sep 2025 03:25:05 +0000 (11:25 +0800)
committerluozheng <1732036298@qq.com>
Wed, 24 Sep 2025 03:25:05 +0000 (11:25 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h
code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp
code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c
code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h

index e944c46..91f1172 100644 (file)
@@ -52,6 +52,7 @@ typedef enum {
     /* -------------------------------------------------------------------------- */
     HANDLE_JUMP_OTA_VIEW, //处理跳转ota界面
     HAND_SCHEDULE_REMINDER_NOTIFY, // 日程提醒通知
+    HAND_TASK_REMINDER_NOTIFY, // 任务提醒通知
     MAX_NUM_HANDLER, 
 } UiServiceMsgId;
 
index c1a4d4a..ebe38b5 100644 (file)
@@ -86,12 +86,14 @@ typedef struct
 // 消息处理程序的函数原型
 static void HandleJumpOtaView(Request *request);
 static void HandScheduleReminderNotify(Request *request);
-
+static void HandTaskReminderNotify(Request *request);
 
 // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
 MsgHandlerEntry msgHandlers[] = {
     {HANDLE_JUMP_OTA_VIEW, HandleJumpOtaView},
-    {HAND_SCHEDULE_REMINDER_NOTIFY,HandScheduleReminderNotify}
+    {HAND_SCHEDULE_REMINDER_NOTIFY,HandScheduleReminderNotify},
+    {HAND_TASK_REMINDER_NOTIFY,HandTaskReminderNotify}
+
 };
 /* -------------------------------------------------------------------------- */
 void ScreenTurnOn(int32_t timeout)
@@ -283,6 +285,7 @@ void SendMsgToUIService(int32_t msgId, uint32_t msgValue, void *data, int32_t da
 }
 
 /* -------------------------------------------------------------------------- */
+// 处理跳转ota界面
 void HandleJumpOtaView(Request *request)
 {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleJumpOtaView msg_id = %d",request->msgId);
@@ -299,11 +302,18 @@ void HandleJumpOtaView(Request *request)
     }
 }
 
+// 日程提醒通知
 void HandScheduleReminderNotify(Request *request)
 {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandScheduleReminderNotify msg_id = %d",request->msgId);
     int status = *(int *)request->data;
 }
+// 任务提醒通知
+void HandTaskReminderNotify(Request *request)
+{
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandTaskReminderNotify msg_id = %d",request->msgId);
+    int status = *(int *)request->data;
+}
 /* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
 }
index 967a408..b087106 100644 (file)
@@ -1105,6 +1105,52 @@ static uint32_t ln_schedule_reminder_at(uint8_t *para, uint32_t paraLen, char *s
     return ERRCODE_SUCC;
 }
 
+/* AT^LN_SCHEDULE_REMINDER_CFG[=scheduleName] */
+static uint32_t ln_schedule_reminder_cfg_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    const char *defaultName = "七点起床";
+    const char *name = defaultName;
+    const char *deviceId = uapi_ln_get_device_id();
+
+    if (para != NULL && paraLen > 0) {
+        uint8_t argv[LN_MAX_ARGC][LN_MAX_ARGV_LEN] = {0};
+        uint32_t argc = 0;
+        (void)ConvertCmdToParam(para, paraLen, argv, &argc);
+        if (argc >= 1) { name = (const char*)argv[0]; }
+    }
+
+    const char *id = (deviceId && deviceId[0]) ? deviceId : "DEVICE_LOCAL";
+
+    char *json = (char*)malloc(512);
+    if (json == NULL) {
+        printf("[LN][SCHEDULE_REMINDER_CFG] OOM\n");
+        return ERRCODE_FAIL;
+    }
+    int n = snprintf(json, 512,
+        "{\n"
+        "  \"deviceId\": \"%s\",\n"
+        "  \"timestamp\": %u,\n"
+        "  \"messageId\": \"at_msg\",\n"
+        "  \"command\": \"ScheduleReminderConfig\",\n"
+        "  \"data\": {\n"
+        "    \"scheduleName\": \"%s\"\n"
+        "  }\n"
+        "}\n",
+        id, 0U, name);
+    if (n <= 0 || n >= 512) {
+        free(json);
+        printf("[LN][SCHEDULE_REMINDER_CFG] build json failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    ln_parse_schedule_reminder_config(json, n);
+
+    printf("[LN][SCHEDULE_REMINDER_CFG] ok, scheduleName=%s\n", name);
+
+    free(json);
+    return ERRCODE_SUCC;
+}
+
 static const at_cmd_table_t g_ln_api_cmd[] = {
     /* ----------------------------------- VAD ---------------------------------- */
     {(char *)"AT^VAD_INIT", vad_init, (char *)"初始化 VAD"},
@@ -1155,7 +1201,8 @@ static const at_cmd_table_t g_ln_api_cmd[] = {
     /* UI相关at */
     {(char *)"AT^LN_UI_OTA_STATUS", ln_ui_ota_status_at, (char *)"推送OTA升级状态: AT^LN_UI_OTA_STATUS=0、1、2、3、4"},
     {(char *)"AT^LN_UI_OTA_PROGRESS", ln_ui_ota_progress_at, (char *)"推送OTA升级进度: AT^LN_UI_OTA_PROGRESS=100"},
-    {(char *)"AT^LN_SCHEDULE_REMINDER", ln_schedule_reminder_at, (char *)"测试解析日程提醒JSON: AT^LN_SCHEDULE_REMINDER[=scheduleName,reminderContent] "},
+    {(char *)"AT^LN_SCHEDULE_REMINDER", ln_schedule_reminder_at, (char *)"日程提醒: AT^LN_SCHEDULE_REMINDER[=scheduleName,reminderContent]"},
+    {(char *)"AT^LN_SCHEDULE_REMINDER_CFG", ln_schedule_reminder_cfg_at, (char *)"日程提醒配置: AT^LN_SCHEDULE_REMINDER_CFG[=scheduleName]"},
 };
 
 
index 0099500..6a7b58f 100644 (file)
@@ -61,6 +61,15 @@ void ln_clear_schedule_reminder(void)
     g_schedule_reminder.enableVibration = 0;
 }
 
+void ln_clear_schedule_reminder_config(void)
+{
+    if (g_schedule_reminder_config.scheduleName)
+    {
+        free(g_schedule_reminder_config.scheduleName);
+        g_schedule_reminder_config.scheduleName = NULL;
+    }
+}
+
 /* 解析日程提醒信息 */
 void ln_parse_schedule_reminder(const char *json_buf, int json_len)
 {
@@ -230,7 +239,12 @@ void ln_parse_schedule_reminder_config(const char *json_buf, int json_len)
     printf("[SCHEDULE_REMINDER_CONFIG] parsed successfully:\n");
     printf("  scheduleName: %s\n", g_schedule_reminder_config.scheduleName ? g_schedule_reminder_config.scheduleName : "");
 
+    // 推送任务提醒通知
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SCHEDULE_REMINDER_CONFIG] push task reminder notification\n");
+    push_task_reminder_notification(g_schedule_reminder_config.scheduleName);
+
     // 清理资源
     cJSON_Delete(root);
     free(text);
+    ln_clear_schedule_reminder_config();
 }
\ No newline at end of file
index 9363f0b..fca5561 100644 (file)
@@ -72,6 +72,14 @@ void push_schedule_reminder_notification(const char *title, const char *content)
     SendMsgToUIService(HAND_SCHEDULE_REMINDER_NOTIFY, 0,(void *)payload, (int32_t)strlen(payload));
 }
 
+// 推送任务提醒通知
+void push_task_reminder_notification(const char *scheduleName)
+{
+    printf("scheduleName:%s\r\n",scheduleName);
+    SendMsgToUIService(HAND_TASK_REMINDER_NOTIFY, 0,(void *)scheduleName, (int32_t)strlen(scheduleName));
+}
+
+
 #ifdef __cplusplus
 };
 #endif
\ No newline at end of file
index ee3cba1..6dd9763 100644 (file)
@@ -42,7 +42,8 @@ void push_ota_progress(int progress);
 void do_restore_factory_setting(void);
 // 推送日程提醒通知
 void push_schedule_reminder_notification(const char *title, const char *content);
-
+// 推送任务提醒
+void push_task_reminder_notification(const char *scheduleName);
 #ifdef __cplusplus
 }
 #endif