if(x==6)
return UI_set_weather_seven_day_data(data_t);
}
+struct message_infor_t message_infor_s;
+void read_message_data(void)
+{
+ if(!creatMessageDir())//创建失败
+ {
+ return;
+ }
+ char path[100];
+ uint32_t data_len = 0;
+ char *str_data = get_message_dir_path();
+ sprintf(path,"%s%s",str_data,ANCS_DATA_CJSON);
+ printf("buf file %s\n",path);
+ FILE *jsfile = fopen(path, "r");
+ cJSON *data_root;
+ if (jsfile != NULL) {
+ printf("succes opening file\n");
+ fseek(jsfile, 0, SEEK_END);
+ long fileSize = ftell(jsfile);
+ fseek(jsfile, 0, SEEK_SET);
+
+ char *jsonData = (char *)malloc(fileSize + 1);
+ fread(jsonData, 1, fileSize, jsfile);
+ jsonData[fileSize] = '\0';
+ fclose(jsfile);
+
+ // 解析JSON数据
+ printf("jsonData %s",jsonData);
+ data_len = strlen(jsonData);
+ data_root= cJSON_Parse(jsonData);
+ free(jsonData);
+ if(data_len > 0)//只有读出来的内容不为空就认为文件里面有数据
+ {
+ cJSON *dataList = cJSON_GetObjectItem(data_root, "infor");
+ if (dataList != NULL && cJSON_IsArray(dataList))//判断是否为NULL并且是否为数组类型的内容
+ {
+ int count = cJSON_GetArraySize(dataList);//获取数组的大小 10//9 8 7 6 5 4 3 2 1 0
+ memset(&message_infor_s,0,sizeof(message_infor_t));
+ message_infor_s.num = count;
+ for (uint8_t i = 0; i < count; i++)//反序存储是反序 所以读出来显示也需要反序度
+ {
+ cJSON *object = NULL;
+ cJSON *uid_t = NULL;
+ cJSON *appid_t = NULL;
+ cJSON *title_buf = NULL;
+ cJSON *msg_buf = NULL;
+ cJSON *time = NULL;
+ cJSON *hasCode = NULL;
+ cJSON *read_t = NULL;
+ cJSON *detialJSON = cJSON_CreateObject();
+ object = cJSON_GetArrayItem(dataList,i);//1 0
+ uid_t = cJSON_GetObjectItem(object, "uid");
+ appid_t = cJSON_GetObjectItem(object, "appid_t");
+ title_buf = cJSON_GetObjectItem(object, "title");
+ msg_buf = cJSON_GetObjectItem(object, "msg");
+ time = cJSON_GetObjectItem(object, "time");
+ hasCode = cJSON_GetObjectItem(object, "hasCode");
+ read_t = cJSON_GetObjectItem(object, "read");
+ message_infor_s.message_t[count - 1- i].uid = uid_t->valueint;//
+ message_infor_s.message_t[count - 1- i].appid = appid_t->valueint;
+ if(strlen(title_buf->valuestring) == 0)
+ {
+ memcpy(message_infor_s.message_t[count - 1- i].title,title_buf->valuestring,strlen(title_buf->valuestring));
+ }else{
+ memset(message_infor_s.message_t[count - 1- i].title,0,TITLE_BUF_LEN);
+
+ }
+
+ if(strlen(msg_buf->valuestring) == 0)
+ {
+ memcpy(message_infor_s.message_t[count - 1- i].msg,msg_buf->valuestring,strlen(msg_buf->valuestring));
+ }else{
+ memset(message_infor_s.message_t[count - 1- i].msg,0,MSG_BUF_LEN);
+ }
+ message_infor_s.message_t[count - 1- i].time = time->valueint;
+ message_infor_s.message_t[count - 1- i].hasCode = hasCode->valueint;
+ message_infor_s.message_t[count - 1- i].read = read_t->valueint;
+ }
+ }
+ }
+ }
+}
+message_infor_t *get_message_info(void)
+{
+ return &message_infor_s;
+}
#ifdef __cplusplus
#if __cplusplus
}
#include "bleEvent.h"\r
#include "ppg_service.h"\r
#include "broadcast_feature.h"\r
+#include <sys/stat.h>\r
#if 1//#ifdef //SUPPORT_BLE_SERVICE\r
#include "app_common_api.h"\r
#include "hidService.h"\r
#include "../../../../../open_source/openharmony/third_party/cJSON/cJSON.h"\r
#include "errcode.h"\r
-#define PHONE_WATCH_CONFIG_PATH "/user/userdata/phone_watch.json"\r
-#define ALARM_DATA_CONFIG_PATH "/user/userdata/alarm_test.json"\r
-#define ANCS_DATA_CONFIG_PATH "/user/userdata/ancs.json"\r
+\r
#include "bletest.h"\r
+\r
#define DEBUG_TEST (0)\r
#define CRC_CHECK_ERR 0 //crc校验失败\r
#define JSON_CHECK_OK 1 //json解析成功\r
{\r
uint8_t crcbuf = 0;\r
uint8_t lrcValue = 0x00;\r
+ if(crcnum == NULL)\r
+ {\r
+ if(crcvalue == 0x00)\r
+ {\r
+ return true;\r
+ }else{\r
+ return false;\r
+ }\r
+ }\r
for(uint16_t i = 0; i < len; i++)\r
{\r
lrcValue =lrcValue+ crcnum[i];\r
gap_remove_all_pairs();\r
}\r
\r
- // uapi_reboot_device();\r
+ uapi_reboot_device();\r
\r
return sendok;\r
}\r
value[17] = flag;\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
+ \r
+ UnbindSucessCmd(1);//1确认解绑;\r
}\r
void clearPaireCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)//发送清除配对指令\r
{\r
memcpy(value+15,&tmp_data,2);\r
if(1)\r
{\r
- uint8_t sleepTime = 0;//作息时间设定 0关闭 1开启\r
- uint8_t bedTimeHour = 0;//就寝时间\r
- uint8_t bedTimeMin = 0;//就寝时间\r
- uint8_t wakeTimeHour = 0;//起床时间\r
- uint8_t wakeTimeMin = 0;//起床时间\r
- uint8_t bedTimeOn = 0;//就寝前20分钟提醒时间\r
- value[17] = sleepTime;\r
- value[18] = bedTimeHour;\r
- value[19] = bedTimeMin;\r
- value[20] = wakeTimeHour;\r
- value[21] = wakeTimeMin;\r
- value[22] = bedTimeOn;\r
- value[23] = Calculate_CRC(value,23);\r
- sendBleData(value,24);\r
+ \r
+ value[17] = 0;\r
+ value[18] = Calculate_CRC(value,18);\r
+ sendBleData(value,19);\r
}else\r
{\r
value[17] = 0;\r
{\r
uint8_t type=buf_cmd[1];\r
printf("type:%d %d data_size:%d data:%d crcvalue:%x",buf_cmd[0],type,data_size,data[0],crcvalue);\r
- // FILE *fp= fopen("user/ble_test.json","w+");\r
- // fwrite((void *)data,1,data_size,fp);\r
- // fclose(fp);\r
switch (type)\r
{\r
case 0x02://获取手机信息\r
type2AE4Data(buf_cmd,data,data_size,totalData,crcvalue);\r
break;\r
- // case 0x02://获取手机信息\r
- // type2AE4Data(buf_cmd,data,data_size,totalData,crcvalue);\r
- // break;\r
default:\r
break;\r
}\r
}\r
+bool creatMessageDir(void)//创建消息文件夹\r
+{\r
+ struct stat info;\r
+ if (stat(ANCS_DATA_CONFIG_PATH, &info) != 0)\r
+ {\r
+ if (mkdir(ANCS_DATA_CONFIG_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)\r
+ {\r
+ return false; // Failed to create folder\r
+ }\r
+ }\r
+ return true;\r
+}\r
+char *get_message_dir_path(void)//获取信息的文件夹路径\r
+{\r
+ return ANCS_DATA_CONFIG_PATH;\r
+}\r
+void message_data(int uid,int appid,char *title,char *msg,int hasCode)\r
+{\r
+ if(!creatMessageDir())//创建文件夹失败\r
+ {\r
+ return;\r
+ }\r
+ uint8_t buf_size = 0;\r
+ char *path;\r
+ path = malloc(100);\r
+ if(path == NULL)\r
+ {\r
+ return;\r
+ }\r
+ char *str_data = get_message_dir_path();\r
+ sprintf(path,"%s%s",str_data,ANCS_DATA_CJSON);\r
+ printf("creat file %s\n",path);\r
+ FILE *jsfile = fopen(path, "r");\r
+ cJSON *data_root;\r
+ if (jsfile != NULL) {\r
+ printf("succes opening file\n");\r
+ fseek(jsfile, 0, SEEK_END);\r
+ long fileSize = ftell(jsfile);\r
+ fseek(jsfile, 0, SEEK_SET);\r
+\r
+ char *jsonData = (char *)malloc(fileSize + 1);\r
+ fread(jsonData, 1, fileSize, jsfile);\r
+ jsonData[fileSize] = '\0';\r
+ fclose(jsfile);\r
+\r
+ // 解析JSON数据\r
+ printf("jsonData %s",jsonData);\r
+ data_root= cJSON_Parse(jsonData);\r
+ // data_root = cJSON_GetObjectItem(modifiedJson,"infor");\r
+ free(jsonData);\r
+ }else{\r
+ data_root = cJSON_Parse("{\\r
+ \"infor\": [\\r
+ ]}");\r
+ }\r
+ cJSON *dataJSON = cJSON_CreateObject();\r
+\r
+ cJSON *detialJSON = cJSON_CreateObject();\r
+\r
+ cJSON* itemJSON = cJSON_CreateObject();\r
+\r
+ uint32_t timeBuf = 0;\r
+ if (uapi_get_timestampe_ss(&timeBuf) != ERRCODE_SUCC)\r
+ {\r
+ timeBuf = 0;\r
+ }\r
+ cJSON_AddNumberToObject(itemJSON,"uid",uid);\r
+ cJSON_AddNumberToObject(itemJSON,"appid_t",appid);//消息类型 微信 qq 等看结构体或者协议定义\r
+ cJSON_AddStringToObject(itemJSON,"title",title);//消息发送者\r
+ cJSON_AddStringToObject(itemJSON,"msg",msg);//消息内容\r
+ cJSON_AddNumberToObject(itemJSON,"time",timeBuf);//时间戳\r
+ cJSON_AddNumberToObject(itemJSON,"hasCode",hasCode);//暂时不需要预留接口\r
+ cJSON_AddBoolToObject(itemJSON,"read",false);//是否已读 false未读 1 已读默认存的时候已经未读\r
+ cJSON *dataList = cJSON_GetObjectItem(data_root, "infor");\r
+ if (dataList != NULL && cJSON_IsArray(dataList))\r
+ {\r
+ int numData = cJSON_GetArraySize(dataList);\r
+ if(numData >= MAX_MESSAGE_NUM)//大于20条就循环迭代显示并保存数据 \r
+ {\r
+ for (uint8_t i = MAX_MESSAGE_NUM-1; i > 0; i--)//2-1 1 0\r
+ {\r
+ // printf("ancs !!!!!!!!!!!!\r\n");\r
+ cJSON *object = NULL;\r
+ cJSON *uid = NULL;\r
+ cJSON *appid_t = NULL;\r
+ cJSON *title = NULL;\r
+ cJSON *msg = NULL;\r
+ cJSON *time = NULL;\r
+ cJSON *hasCode = NULL;\r
+ cJSON *read = NULL;\r
+ cJSON* deitemJSON = cJSON_CreateObject();\r
+ cJSON *detialJSON = cJSON_CreateObject();\r
+ object = cJSON_GetArrayItem(dataList,i);//1 0 \r
+ uid = cJSON_GetObjectItem(object, "uid");\r
+ appid_t = cJSON_GetObjectItem(object, "appid_t");\r
+ title = cJSON_GetObjectItem(object, "title");\r
+ msg = cJSON_GetObjectItem(object, "msg");\r
+ time = cJSON_GetObjectItem(object, "time");\r
+ hasCode = cJSON_GetObjectItem(object, "hasCode");\r
+ read = cJSON_GetObjectItem(object, "read");\r
+ printf("ancs title->valuestring:%s msg->valuestring:%s\r\n",title->valuestring,msg->valuestring);\r
+ cJSON_AddNumberToObject(deitemJSON,"uid",uid->valueint);\r
+ cJSON_AddNumberToObject(deitemJSON,"appid_t",appid_t->valueint);//消息类型 微信 qq 等看结构体或者协议定义\r
+ cJSON_AddStringToObject(deitemJSON,"title",title->valuestring);//消息发送者\r
+ cJSON_AddStringToObject(deitemJSON,"msg",msg->valuestring);//消息内容\r
+ cJSON_AddNumberToObject(deitemJSON,"time",time->valueint);//时间戳\r
+ cJSON_AddNumberToObject(deitemJSON,"hasCode",hasCode->valueint);//暂时不需要预留接口\r
+ cJSON_AddBoolToObject(deitemJSON,"read",read->valueint);//是否已读 false未读 1 已读默认存的时候已经未读\r
+ cJSON_ReplaceItemInArray(dataList, i-1, deitemJSON);\r
+ }\r
+ cJSON_ReplaceItemInArray(dataList,MAX_MESSAGE_NUM-1, itemJSON);\r
+ }else{\r
+ cJSON_AddItemToArray(dataList, itemJSON);\r
+ }\r
+ }\r
+ char *jsonString = cJSON_Print(data_root);\r
+ printf("ancs %s",jsonString);\r
+ FILE *file = fopen(path, "wb");\r
+ if (file)\r
+ {\r
+ fwrite(jsonString, 1, strlen(jsonString), file);\r
+ fclose(file);\r
+ }\r
+ free(jsonString);\r
+ if(path != NULL)\r
+ {\r
+ free(path);\r
+ }\r
+\r
+}\r
\r
//安卓消息接收解析数据 //ANCS 2AE1\r
uint8_t jscheck_ancs(uint8_t *data)\r
json = data;\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
- printf("信息解析 JSON解析\n");\r
+ printf("信息解析 JSON解析 失败\n");\r
return 2;\r
}\r
\r
+\r
int uid_t = 0;\r
int appid_t = 0;\r
- char titleBuf[256];\r
- char msgBuf[300];\r
- char timeBuf[32];\r
int hasCode_t = 0;\r
+ char *titleBuf;\r
+ char *msgBuf;\r
+ titleBuf = malloc(TITLE_BUF_LEN);\r
+ msgBuf = malloc(MSG_BUF_LEN);\r
+ if(titleBuf == NULL || msgBuf == NULL)//申请内存失败不在申请\r
+ {\r
+ return 2;\r
+ }\r
+ memset(titleBuf,0,TITLE_BUF_LEN);\r
+ memset(msgBuf,0,MSG_BUF_LEN);\r
cJSON* uid = cJSON_GetObjectItem(root, "uid");\r
if (cJSON_IsNumber(uid)) {\r
printf("uid_t: %d\n", uid->valueint);\r
+ uid_t = uid->valueint;\r
}\r
cJSON* appid = cJSON_GetObjectItem(root, "appid");\r
if (cJSON_IsNumber(appid)) {\r
if (cJSON_IsString(time)) {\r
printf("time: %s\n", time->valuestring);\r
// timeBuf = time->valueint;\r
- time->valuestring[strlen(time->valuestring)]='\0';\r
- memcpy(timeBuf,time->valuestring,strlen(time->valuestring));\r
-\r
- \r
}\r
cJSON* hasCode = cJSON_GetObjectItem(root, "hasCode");\r
if (cJSON_IsNumber(hasCode)) {\r
hasCode_t = hasCode->valueint;\r
}\r
cJSON_Delete(root);\r
- uint8_t buf_size = 0;\r
- FILE *jsfile = fopen(ANCS_DATA_CONFIG_PATH, "r");\r
- cJSON *data_root;\r
- if (jsfile != NULL) {\r
- printf("succes opening file\n");\r
- fseek(jsfile, 0, SEEK_END);\r
- long fileSize = ftell(jsfile);\r
- fseek(jsfile, 0, SEEK_SET);\r
-\r
- char *jsonData = (char *)malloc(fileSize + 1);\r
- fread(jsonData, 1, fileSize, jsfile);\r
- jsonData[fileSize] = '\0';\r
- fclose(jsfile);\r
-\r
- // 解析JSON数据\r
- printf("jsonData %s",jsonData);\r
- data_root= cJSON_Parse(jsonData);\r
- // data_root = cJSON_GetObjectItem(modifiedJson,"infor");\r
- free(jsonData);\r
- }else{\r
- data_root = cJSON_Parse("{\\r
- \"infor\": [\\r
- ]}");\r
+ message_data(uid_t,appid_t,title_c,msgBuf,hasCode);\r
+ if(title_c != NULL){\r
+ free(title_c);\r
}\r
- cJSON *dataJSON = cJSON_CreateObject();\r
-\r
- cJSON *detialJSON = cJSON_CreateObject();\r
-\r
- cJSON* itemJSON = cJSON_CreateObject();\r
-\r
- \r
- \r
- cJSON_AddNumberToObject(itemJSON,"uid",uid_t);\r
- cJSON_AddNumberToObject(itemJSON,"appid_t",appid_t);\r
- cJSON_AddStringToObject(itemJSON,"title",titleBuf);\r
- cJSON_AddStringToObject(itemJSON,"msg",msgBuf);\r
- cJSON_AddStringToObject(itemJSON,"time",timeBuf);\r
- cJSON_AddNumberToObject(itemJSON,"hasCode",hasCode_t);\r
- cJSON *dataList = cJSON_GetObjectItem(data_root, "infor");\r
- // printf("dataList %s",dataList);\r
- cJSON *array = cJSON_GetObjectItemCaseSensitive(data_root, "infor");\r
- cJSON_AddItemToArray(array, itemJSON);\r
-\r
- // char *modified_json = cJSON_Print(data_root);\r
-\r
-\r
- char *jsonString = cJSON_Print(data_root);\r
- printf("ancs %s",jsonString);\r
- FILE *file = fopen(ANCS_DATA_CONFIG_PATH, "wb");\r
- if (file)\r
- {\r
- fwrite(jsonString, 1, strlen(jsonString), file);\r
- fclose(file);\r
+ if(msgBuf != NULL){\r
+ free(msgBuf);\r
}\r
- free(jsonString);\r
return 1;\r
}\r
void ancsDataShowCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
printf("type:%d %d data_size:%d data:%d crcvalue:%x",buf_cmd[0],type,data_size,data[0],crcvalue);\r
switch (type)\r
{\r
- case 0x03://获取手机信息\r
+ case 0x03://\r
type2AE1Data(buf_cmd,data,data_size,totalData,crcvalue);\r
break;\r
default:\r
memset(cmd_data,0,17);\r
memcpy(cmd_data,totalData,17);\r
totalpack=1;\r
- break;\r
}else{//直接发送数据解析\r
- printf("muilt totalDataLen11;%d packdataLen:%d",totalDataLen,packdataLen);\r
muiltFlag = 0; \r
packdataLen = event_size-17;\r
memset(cmd_data,0,17);\r
memcpy(cmd_data,totalData,17);\r
-\r
- // 73 2 10 1 0 0 0 16 0 0 0 1 0 0 0 16 0\r
- recvData = malloc(packdataLen-1);\r
- if(recvData == NULL)return;\r
- memcpy(recvData,totalData+17,packdataLen-1);\r
- if(totalDataLen == 0){\r
- crcvalue = 0x00;\r
- }else{\r
+ printf("muilt totalDataLen11;%d packdataLen:%d",totalDataLen,packdataLen);\r
+ if(totalData == 0 && event_size == 18)//数据长度为0 没数据数据包 \r
+ {\r
crcvalue = totalData[event_size-1];\r
+ bleLongRecvData(NULL,0,cmd_data,totalData,crcvalue);\r
+ }else{\r
+ // 73 2 10 1 0 0 0 16 0 0 0 1 0 0 0 16 0\r
+ recvData = malloc(packdataLen-1);\r
+ if(recvData != NULL){\r
+ memcpy(recvData,totalData+17,packdataLen-1);\r
+ crcvalue = totalData[event_size-1];\r
+ bleLongRecvData(recvData,packdataLen-1,cmd_data,totalData,crcvalue);\r
+ if(recvData != NULL){\r
+ free(recvData);\r
+ }\r
+ packdataLen = 0;\r
+ }\r
}\r
- \r
- bleLongRecvData(recvData,packdataLen-1,cmd_data,totalData,crcvalue);\r
- if(recvData != NULL){\r
- free(recvData);\r
- }\r
- packdataLen = 0;\r
- break;\r
}\r
}\r
break;\r
- \r
}else//这是接收两包以上的数据\r
{\r
totalpack+=1;//包数\r