From 4ea4f9b26f1f7fdd749667ac7e6e8d541645606e Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 24 Sep 2025 11:25:05 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E4=BB=BB=E5=8A=A1=E6=8F=90?= =?utf8?q?=E9=86=92at=E6=B5=8B=E8=AF=95=E6=8C=87=E4=BB=A4,=E5=BE=85ui?= =?utf8?q?=E9=80=BB=E8=BE=91=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/include/uiservice/ui_service.h | 1 + .../nativeui/uiservice/src/ui_service.cpp | 14 +++++- .../zhihui/leiniao/imsl_ln/leiniao_api_at.c | 49 ++++++++++++++++++- .../zhihui/leiniao/imsl_ln/ln_api_schedule.c | 14 ++++++ .../leiniao/ln_api_cpp/ln_api_interface.cpp | 8 +++ .../leiniao/ln_api_cpp/ln_api_interface.h | 3 +- 6 files changed, 85 insertions(+), 4 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h index e944c4648..91f117267 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h @@ -52,6 +52,7 @@ typedef enum { /* -------------------------------------------------------------------------- */ HANDLE_JUMP_OTA_VIEW, //处理跳转ota界面 HAND_SCHEDULE_REMINDER_NOTIFY, // 日程提醒通知 + HAND_TASK_REMINDER_NOTIFY, // 任务提醒通知 MAX_NUM_HANDLER, } UiServiceMsgId; diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp index c1a4d4add..ebe38b58e 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp @@ -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 } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c index 967a40887..b087106d8 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c @@ -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]"}, }; diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c index 0099500fd..6a7b58ff2 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c @@ -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 diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp index 9363f0b88..fca5561d4 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp @@ -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 diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h index ee3cba185..6dd976350 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h @@ -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 -- 2.17.1