\r
bool bin_Check_schedule(uint8_t *data,uint16_t len)\r
{\r
- uint16 offset=0;\r
- uint16 buf_len=0;\r
- uint16 id_=1;\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"len %d\r\n",len);\r
- // for(int i=0;i<len ;i++)\r
- // {\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," %02x",data[i]);\r
- // }\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"end\r\n");\r
+ uint16_t offset = 0;\r
+ uint16_t buf_len = 0;\r
+ uint16_t id_ = 1;\r
+ \r
+ // 打印函数开始及总长度信息\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bin_Check_schedule start, total len: %d", len);\r
\r
- while (offset<len)\r
+ while (offset < len)\r
{\r
uint16_t id;\r
- memcpy_s(&id,2,&data[offset],2);\r
- offset+=2;\r
- if(offset>=len)\r
+ // 解析ID\r
+ memcpy_s(&id, 2, &data[offset], 2);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Parsing ID: 0x%04X at offset: %d", id, offset);\r
+ offset += 2;\r
+ if (offset >= len)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len after parsing ID, break");\r
break;\r
}\r
\r
- memcpy_s(&buf_len,2,&data[offset],2);\r
- offset+=2;\r
- if(offset>=len)\r
- break;\r
+ // 解析标题长度\r
+ memcpy_s(&buf_len, 2, &data[offset], 2);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title length: %d at offset: %d", buf_len, offset);\r
+ offset += 2;\r
+ if (offset >= len)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len after parsing title length, break");\r
+ break;\r
+ }\r
\r
- char *title=(char*)malloc(buf_len+1);\r
- memset_s(title,512,0,buf_len+1);\r
- memcpy_s(title,512,&data[offset],buf_len);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"len:%d str %s\r\n",buf_len,title);\r
+ // 解析标题内容\r
+ char *title = (char*)malloc(buf_len + 1);\r
+ if (!title)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to allocate memory for title");\r
+ break;\r
+ }\r
+ memset_s(title, buf_len + 1, 0, buf_len + 1); // 修正为实际分配的大小\r
+ memcpy_s(title, buf_len + 1, &data[offset], buf_len);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Parsed title: [%s] (length: %d) at offset: %d", title, buf_len, offset);\r
\r
- offset+=buf_len;\r
+ offset += buf_len;\r
\r
- if(offset>=len)\r
+ if (offset >= len)\r
{\r
- if(title)\r
- {\r
- free(title);\r
- }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len after parsing title, free title and break");\r
+ free(title);\r
break;\r
}\r
- uint32_t timetemp_begin=0;\r
- memcpy_s(&timetemp_begin,4,&data[offset],4);\r
- offset+=4;\r
- if(offset>=len)\r
- break;\r
\r
- uint32_t timetemp_end=0;\r
- memcpy_s(&timetemp_end,4,&data[offset],4);\r
- offset+=4;\r
- if(offset>=len)\r
- break;\r
+ // 解析开始时间\r
+ uint32_t timetemp_begin = 0;\r
+ memcpy_s(&timetemp_begin, 4, &data[offset], 4);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Start time: %u at offset: %d", timetemp_begin, offset);\r
+ offset += 4;\r
+ if (offset >= len)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len after parsing start time, free title and break");\r
+ free(title);\r
+ break;\r
+ }\r
\r
- memcpy_s(&buf_len,2,&data[offset],2);\r
- offset+=2;\r
- if(buf_len==0)\r
+ // 解析结束时间\r
+ uint32_t timetemp_end = 0;\r
+ memcpy_s(&timetemp_end, 4, &data[offset], 4);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "End time: %u at offset: %d", timetemp_end, offset);\r
+ offset += 4;\r
+ if (offset >= len)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%d %d\r\n",offset,len);\r
- if(offset==len)\r
- Ble_Set_ScheduleInfo(id_,timetemp_begin,timetemp_end,title,"",true);\r
- else\r
- Ble_Set_ScheduleInfo(id_,timetemp_begin,timetemp_end,title,"",false);\r
- \r
- id_++;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len after parsing end time, free title and break");\r
+ free(title);\r
+ break;\r
+ }\r
+\r
+ // 解析附加信息长度\r
+ memcpy_s(&buf_len, 2, &data[offset], 2);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Additional info length: %d at offset: %d", buf_len, offset);\r
+ offset += 2;\r
\r
- if(title)\r
+ if (buf_len == 0)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No additional info, offset: %d, len: %d", offset, len);\r
+ // 调用设置函数\r
+ if (offset == len)\r
+ {\r
+ Ble_Set_ScheduleInfo(id_, timetemp_begin, timetemp_end, title, "", true);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set schedule info (complete), id_: %d", id_);\r
+ }\r
+ else\r
{\r
- free(title);\r
+ Ble_Set_ScheduleInfo(id_, timetemp_begin, timetemp_end, title, "", false);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set schedule info (incomplete), id_: %d", id_);\r
}\r
+ \r
+ id_++;\r
+ free(title);\r
continue;\r
}\r
- if(offset>=len)\r
+\r
+ if (offset >= len)\r
{\r
- if(title)\r
- {\r
- free(title);\r
- }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Offset exceed len before parsing additional info, free title and break");\r
+ free(title);\r
break;\r
}\r
- \r
-\r
- char *str_=(char*)malloc(buf_len+1);\r
- memset_s(str_,512,0,buf_len+1);\r
- memcpy_s(str_,512,&data[offset],buf_len);\r
-\r
- offset+=buf_len;\r
- if(offset==len)\r
- Ble_Set_ScheduleInfo(id_,timetemp_begin,timetemp_end,title,str_,true);\r
- else\r
- Ble_Set_ScheduleInfo(id_,timetemp_begin,timetemp_end,title,str_,false);\r
-\r
- id_++;\r
\r
- \r
- if(title)\r
+ // 解析附加信息\r
+ char *str_ = (char*)malloc(buf_len + 1);\r
+ if (!str_)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to allocate memory for additional info");\r
free(title);\r
+ break;\r
}\r
- if(str_)\r
+ memset_s(str_, buf_len + 1, 0, buf_len + 1); // 修正为实际分配的大小\r
+ memcpy_s(str_, buf_len + 1, &data[offset], buf_len);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Parsed additional info: [%s] (length: %d) at offset: %d", str_, buf_len, offset);\r
+\r
+ offset += buf_len;\r
+ \r
+ // 调用设置函数\r
+ if (offset == len)\r
{\r
- free(str_);\r
+ Ble_Set_ScheduleInfo(id_, timetemp_begin, timetemp_end, title, str_, true);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set schedule info with additional info (complete), id_: %d", id_);\r
}\r
- if(offset>=len)\r
+ else\r
{\r
- break;\r
+ Ble_Set_ScheduleInfo(id_, timetemp_begin, timetemp_end, title, str_, false);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set schedule info with additional info (incomplete), id_: %d", id_);\r
}\r
\r
- }\r
- \r
+ id_++;\r
\r
+ // 释放内存\r
+ free(title);\r
+ free(str_);\r
+ \r
+ if (offset >= len)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "All data parsed, exit loop");\r
+ break;\r
+ }\r
+ }\r
+ \r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bin_Check_schedule end, total parsed id count: %d", id_ - 1);\r
return true;\r
}\r
void APP_send_schedule_Cmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
if(Check_CRC(data,len,crcvalue))\r
{\r
\r
- \r
- if(bin_Check_schedule(data,len))\r
+ printf("11111111111111111\n");\r
+ bool val = bin_Check_schedule(data,len);\r
+ printf("222222222222222222222\n");\r
+ if(val)\r
{\r
sendBuf[17] = 1;\r
}\r