#include "media_thread_adapt.h"
#include "ln_api.h"
#include "ln_api_interface.h"
+#include "cJSON.h"
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
#define VAD_MAX_ARGC 8
return ERRCODE_SUCC;
}
+
+/* AT^LN_SCHEDULE_REMINDER[=scheduleName,reminderContent] */
+// AT^LN_SCHEDULE_REMINDER
+// AT^LN_SCHEDULE_REMINDER=开会提醒
+// AT^LN_SCHEDULE_REMINDER=开会提醒,您有一个会议即将开始
+static uint32_t ln_schedule_reminder_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ VAD_UNUSED(strCommonCmd);
+ const char *defaultName = "日程提醒";
+ const char *defaultContent = "您有一个提醒";
+ const char *name = defaultName;
+ const char *content = defaultContent;
+
+ const char *rawId = uapi_ln_get_device_id();
+ const char *id = (rawId && rawId[0]) ? rawId : "DEVICE_LOCAL";
+
+ 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]; }
+ if (argc >= 2) { content = (const char*)argv[1]; }
+ }
+
+ /* 在函数内部拼 JSON,避免 AT 长度限制 */
+ char *json = (char*)malloc(1024);
+ if (json == NULL) {
+ printf("[LN][SCHEDULE_REMINDER] OOM\n");
+ return ERRCODE_FAIL;
+ }
+ int n = snprintf(json, 1024,
+ "{\n"
+ " \"deviceId\": \"%s\",\n"
+ " \"timestamp\": %u,\n"
+ " \"messageId\": \"at_msg\",\n"
+ " \"command\": \"ScheduleReminder\",\n"
+ " \"data\": {\n"
+ " \"scheduleId\": %u,\n"
+ " \"deviceId\": \"%s\",\n"
+ " \"scheduleName\": \"%s\",\n"
+ " \"reminderContent\": \"%s\",\n"
+ " \"reminderAudioUrl\": \"https://example.com/reminder/reminder_001.mp3\",\n"
+ " \"enableVoice\": 1,\n"
+ " \"enableVibration\": 1\n"
+ " }\n"
+ "}\n",
+ id,0U, 999U, id, name, content);
+ if (n <= 0 || n >= 1024) {
+ free(json);
+ printf("[LN][SCHEDULE_REMINDER] build json failed\n");
+ return ERRCODE_FAIL;
+ }
+
+ ln_parse_schedule_reminder(json, n);
+
+ free(json);
+ return ERRCODE_SUCC;
+}
+
static const at_cmd_table_t g_ln_api_cmd[] = {
/* ----------------------------------- VAD ---------------------------------- */
{(char *)"AT^VAD_INIT", vad_init, (char *)"初始化 VAD"},
/* 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] "},
};
// 推送日程提醒通知
void push_schedule_reminder_notification(const char *title, const char *content)
{
- // 打开屏幕,避免通知被遮挡(如需要)
- ScreenTurnOn(5);
-
// 组装简易数据载荷:标题+内容(若 UI 端需要更复杂结构,可定义专用 struct)
// 这里直接传两段以'\n'拼接的字符串给 UI,UI 再自行拆分。
char payload[384] = {0};
- printf("title:%s,content%s",title,content);
+ printf("title:%s,content%s\r\n",title,content);
snprintf(payload, sizeof(payload) - 1, "%s\n%s", title, content);
SendMsgToUIService(HAND_SCHEDULE_REMINDER_NOTIFY, 0,(void *)payload, (int32_t)strlen(payload));
}