namespace OHOS
{
struct addressbook addressbook_t;
-
+ static char *buf = NULL;
void read_addressbook_bin_file()
{
- FILE *fp= fopen(ADDRESS_BOOK_PATH,"rb+");
- if(fp==NULL)
- {
- fp= fopen(ADDRESS_BOOK_PATH,"wb+");
- fclose(fp);
- return;
- }
- char buf[124*20];
- int ret=fread(buf,1,512,fp);
- int offset_f=512;
- while (ret==512)
- {
- ret=fread(&buf[offset_f],1,512,fp);
- offset_f+=512;
- }
-
- int num=buf[0];//人数
- printf("人数: %d\r\n",num);
- addressbook_t.num=num;
- int offset=1;
- for (int j=0;j<num;j++)
- {
- uint8_t sex = buf[offset];
- printf("性别: %d\r\n",sex);
- addressbook_t.Contact_t[j].sex=sex;
- offset=offset+1;
- uint8_t name_len=buf[offset];
- printf("name_len %d\r\n",name_len);
- char *name=(char *)malloc(sizeof(char)*name_len+1);
- memset(name,0,name_len+1);
- if(name_len==0)
- {
- name_len=strlen("未知");
- printf("未知\r\n");
- }
- else
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file");
+ FILE *fp= fopen(ADDRESS_BOOK_PATH,"rb+");
+ if(fp==NULL)
{
- memcpy(name,&buf[offset+1],name_len);
- printf("姓名: %s\r\n",name);
- addressbook_t.Contact_t[j].name=name;
+ fp= fopen(ADDRESS_BOOK_PATH,"wb+");
+ fclose(fp);
+ return;
}
- offset=offset+name_len+1;
- uint8_t phone_num=buf[offset];
- offset=offset+1;
- addressbook_t.Contact_t[j].phone_num=phone_num;
- for(int i=0;i<phone_num;i++)
- {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file!!!!!!");
+ buf = (char *)malloc(512);
- uint8_t phonen_len=buf[offset];
- //char phonen_name[32]={0};
- char *phonen_name=(char *)malloc(sizeof(char)*phonen_len+1);
- memset(phonen_name,0,phonen_len+1);
- memcpy(phonen_name,&buf[offset+1],phonen_len);
- printf("号码: %s\r\n",phonen_name);
- addressbook_t.Contact_t[j].phone_number_t[i].number=phonen_name;
- offset=offset+phonen_len+1;
+ int ret=fread(buf,1,512,fp);
+ int offset_f=512;
+ while (ret==512)
+ {
+ buf = (char *)realloc(buf,offset_f+512);
+ ret=fread(&buf[offset_f],1,512,fp);
+ offset_f+=512;
}
- for(int i=0;i<phone_num;i++)
+
+ int num=buf[0];//人数
+ printf("人数: %d\r\n",num);
+ addressbook_t.num=num;
+ int offset=1;
+ for (int j=0;j<num;j++)
{
- uint8_t add = buf[offset];
- printf("归属地长度: %d\r\n",add);
- char *add_buf=(char *)malloc(sizeof(char)*add+1);
- memset(add_buf,0,add+1);
- memcpy(add_buf,&buf[offset+1],add);
- printf("归属地: %s\r\n",add_buf);
- addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area=add_buf;
- offset=offset+add+1;
+ uint8_t sex = buf[offset];
+ printf("性别: %d\r\n",sex);
+ addressbook_t.Contact_t[j].sex=sex;
+ offset=offset+1;
+ uint8_t name_len=buf[offset];
+ printf("name_len %d\r\n",name_len);
+ // char *name=(char *)malloc(sizeof(char)*name_len+1);
+ memset(addressbook_t.Contact_t[j].name,0,name_len+1);
+ if(name_len==0)
+ {
+ name_len=strlen("未知");
+ printf("未知\r\n");
+ }
+ else
+ {
+ if(name_len > NAME_LEN)
+ {
+ addressbook_t.Contact_t[j].name[NAME_LEN] = '\0';
+ memcpy(addressbook_t.Contact_t[j].name,&buf[offset+1],NAME_LEN);
+ }else{
+ memcpy(addressbook_t.Contact_t[j].name,&buf[offset+1],name_len);
+ }
+
+ printf("姓名: %s\r\n",addressbook_t.Contact_t[j].name);
+ // addressbook_t.Contact_t[j].name=name;
+ }
+ offset=offset+name_len+1;
+ uint8_t phone_num=buf[offset];
+ offset=offset+1;
+ addressbook_t.Contact_t[j].phone_num=phone_num;
+ for(int i=0;i<phone_num;i++)
+ {
+
+ uint8_t phonen_len=buf[offset];
+ //char phonen_name[32]={0};
+ // char *phonen_name=(char *)malloc(sizeof(char)*phonen_len+1);
+ memset(addressbook_t.Contact_t[j].phone_number_t[i].number,0,phonen_len+1);
+ if(phonen_len > NUMBER_LEN)
+ {
+ addressbook_t.Contact_t[j].phone_number_t[i].number[NUMBER_LEN] = '\0';
+ memcpy(addressbook_t.Contact_t[j].phone_number_t[i].number,&buf[offset+1],NUMBER_LEN);
+ }else{
+ memcpy(addressbook_t.Contact_t[j].phone_number_t[i].number,&buf[offset+1],phonen_len);
+ }
+
+ printf("号码: %s\r\n",addressbook_t.Contact_t[j].phone_number_t[i].number);
+ // addressbook_t.Contact_t[j].phone_number_t[i].number=phonen_name;
+ offset=offset+phonen_len+1;
+ }
+ for(int i=0;i<phone_num;i++)
+ {
+ uint8_t add = buf[offset];
+ printf("归属地长度: %d\r\n",add);
+ // char *add_buf=(char *)malloc(sizeof(char)*add+1);
+ memset(addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area,0,add+1);
+ memcpy(addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area,&buf[offset+1],add);
+ printf("归属地: %s\r\n",addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area);
+ // addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area=add_buf;
+ offset=offset+add+1;
- uint8_t yun = buf[offset];
- char *yun_buf=(char *)malloc(sizeof(char)*yun+1);
- memset(yun_buf,0,yun+1);
- memcpy(yun_buf,&buf[offset+1],yun);
- printf("运营商: %s\r\n",add_buf);
- addressbook_t.Contact_t[j].phone_number_t[i].operator_t=yun_buf;
+ uint8_t yun = buf[offset];
+ // char *yun_buf=(char *)malloc(sizeof(char)*yun+1);
+ memset(addressbook_t.Contact_t[j].phone_number_t[i].operator_t,0,yun+1);
+ if(yun > OPERATOR_LEN)
+ {
+ addressbook_t.Contact_t[j].phone_number_t[i].operator_t[OPERATOR_LEN]='\0';
+ memcpy(addressbook_t.Contact_t[j].phone_number_t[i].operator_t,&buf[offset+1],OPERATOR_LEN);
+ }else{
+ memcpy(addressbook_t.Contact_t[j].phone_number_t[i].operator_t,&buf[offset+1],yun);
+ }
+ printf("运营商: %s\r\n",addressbook_t.Contact_t[j].phone_number_t[i].operator_t);
+ // addressbook_t.Contact_t[j].phone_number_t[i].operator_t=yun_buf;
- offset=offset+yun+1;
+ offset=offset+yun+1;
+ }
+ }
+ fclose(fp);
+ if(buf)
+ {
+ free(buf);
}
- }
- fclose(fp);
}
void get_phone_addrss_name(char *name,const char *phone)
void write_addressbook_bin_flle()
{
+ #if 0
FILE *fp= fopen(ADDRESS_BOOK_PATH,"wb+");
if(fp==NULL)
return;
}
fwrite((void *)buf,1,offset,fp);
fclose(fp);
+ #endif
}
void add_addressbook(struct Contact *data)
{
-
+ #if 0
if(data->name!=NULL)
{
}
}
addressbook_t.num+=1;
-
+ #endif
}
void add_addressbook_by_AT(char *name,char *phone)
{
- Contact data;
- data.sex=0;
- data.name=name;
- data.phone_num=1;
- data.phone_number_t[0].number=phone;
- data.phone_number_t[0].affiliating_area=NULL;
- data.phone_number_t[0].operator_t=NULL;
+ // Contact data;
+ // data.sex=0;
+ // data.name=name;
+ // data.phone_num=1;
- data.phone_number_t[1].number=NULL;
- data.phone_number_t[1].affiliating_area=NULL;
- data.phone_number_t[1].operator_t=NULL;
+ // data.phone_number_t[0].number=phone;
+ // memset(data.phone_number_t[0].affiliating_area,0,AREA_LEN);
+ // // data.phone_number_t[0].affiliating_area=NULL;
+ // // data.phone_number_t[0].operator_t=NULL;
+ // memset(data.phone_number_t[0].affiliating_area,0,OPERATOR_LEN);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneaddressbook::phoneaddressbook");
- add_addressbook(&data);
+ // data.phone_number_t[1].number=NULL;
+ // data.phone_number_t[1].affiliating_area=NULL;
+ // data.phone_number_t[1].operator_t=NULL;
+
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneaddressbook::phoneaddressbook");
+ // add_addressbook(&data);
}
void free_address()
{
- for(int i=0;i<addressbook_t.num;i++)
- {
- if(addressbook_t.Contact_t[i].name)
- {
- free(addressbook_t.Contact_t[i].name);
- }
- for(int y=0;y<addressbook_t.Contact_t[i].phone_num;y++)
- {
- if(addressbook_t.Contact_t[i].phone_number_t[y].number)
- {
- free(addressbook_t.Contact_t[i].phone_number_t[y].number);
- }
- if(addressbook_t.Contact_t[i].phone_number_t[y].affiliating_area)
- {
- free(addressbook_t.Contact_t[i].phone_number_t[y].affiliating_area);
- }
- if(addressbook_t.Contact_t[i].phone_number_t[y].operator_t)
- {
- free(addressbook_t.Contact_t[i].phone_number_t[y].operator_t);
- }
+ // for(int i=0;i<addressbook_t.num;i++)
+ // {
+ // if(addressbook_t.Contact_t[i].name)
+ // {
+ // free(addressbook_t.Contact_t[i].name);
+ // }
+ // for(int y=0;y<addressbook_t.Contact_t[i].phone_num;y++)
+ // {
+ // if(addressbook_t.Contact_t[i].phone_number_t[y].number)
+ // {
+ // free(addressbook_t.Contact_t[i].phone_number_t[y].number);
+ // }
+ // if(addressbook_t.Contact_t[i].phone_number_t[y].affiliating_area)
+ // {
+ // free(addressbook_t.Contact_t[i].phone_number_t[y].affiliating_area);
+ // }
+ // if(addressbook_t.Contact_t[i].phone_number_t[y].operator_t)
+ // {
+ // free(addressbook_t.Contact_t[i].phone_number_t[y].operator_t);
+ // }
- }
+ // }
- }
+ // }
}
phoneaddressbook::phoneaddressbook()
return len;\r
\r
}\r
-errcode_t UnbindSucessCmd(void)//发送解绑指令,解绑界面调用这个函数 如果点了✓调用这个函数 返回成功后延迟10s再重启设备 \r
+errcode_t UnbindSucessCmd(uint8_t flag)//发送解绑指令,解绑界面调用这个函数 如果点了✓调用这个函数 返回成功后延迟10s再重启设备 \r
{\r
errcode_t sendok = ERRCODE_FAIL;\r
uint32_t tmp = 1;\r
memcpy(value+7,&tmp,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp,2);\r
- value[17] = 1;\r
+ value[17] = flag;\r
value[18] = Calculate_CRC(value,18);\r
sendok = sendBleData(value,19);\r
bool ret = bt_is_acl_connected(&phone_addr);\r
- if(0!=remove(PHONE_WATCH_CONFIG_PATH))\r
- {\r
- printf("json remove fail\r\n");\r
+ if(flag == 1)\r
+ { \r
+ if(0!=remove(PHONE_WATCH_CONFIG_PATH))\r
+ {\r
+ printf("json remove fail\r\n");\r
+ }\r
+ gap_ble_remove_all_pairs(); \r
+ gap_remove_all_pairs();\r
}\r
- gap_ble_remove_all_pairs(); \r
- gap_remove_all_pairs();\r
+ \r
// uapi_reboot_device();\r
\r
return sendok;\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("时间 JSON解析错误\n");\r
- return 1;\r
+ return 2;\r
}\r
char *locations;\r
int year = 1970;\r
sprintf((char *)time_data,"%d-%d-%d %d:%d:%d",year+2000,month,day,hour,minute,second);\r
set_system_time(time_data);\r
cJSON_Delete(root);\r
- return 2;\r
+ return 1;\r
}\r
\r
\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("时间 JSON解析错误\n");\r
- return 1;\r
+ return 2;\r
}\r
// {\r
// "ty":0,\r
printf("st: %d\n", st->valueint);\r
}\r
cJSON_Delete(root);\r
- return 2;\r
+ return 1;\r
}\r
\r
\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("天气 JSON解析错误\n");\r
- return 1;\r
+ return 2;\r
}\r
cJSON *now_cjson = cJSON_GetObjectItem(root, "now");\r
\r
// }\r
cJSON_Delete(root);\r
printf("weather data!!!!!!!!!!end\r\n");\r
- return 2;\r
+ return 1;\r
}\r
\r
\r
{\r
\r
}\r
-\r
+// #include "phoneaddressmodel.h"\r
//电话薄解析函数\r
void Parse_addressbook_bin(uint8_t *crcnum,uint16_t len)\r
{\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
//解析,传来的二进制数据\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "");\r
- Parse_addressbook_bin(crcnum,len);\r
- \r
+ char *address_path = addressbook();\r
+ FILE *file = fopen(address_path, "wb+");\r
+ if (file)\r
+ {\r
+ size_t len_t = fwrite((void *)crcnum,1,len,file);\r
+ fclose(file); \r
+ if(len_t == len){\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fwrite:%d",len_t);\r
+ addressbookToRead();\r
+ }\r
+ }\r
value[17] = 0x01;\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
}\r
while (1)\r
{\r
+\r
+\r
+ //json id=0 \r
time = 1711348052+3600*packCount;\r
memcpy(buf+startDataLen,&time,4);//21 \r
startDataLen=startDataLen+4;\r
free(recvData);\r
}\r
}\r
- }else if(data2ae4Cmd == handle)\r
+ }else if(data2ae4Cmd == handle)//长数据接收\r
{\r
while (1)\r
{\r
if(bigDataBuf != NULL){\r
free(bigDataBuf);\r
}\r
- // if(recvData != NULL){\r
- // // free(recvData);\r
- // }\r
+ if(recvData != NULL){\r
+ free(recvData);\r
+ }\r
break;\r
}\r
}\r
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xhandle %d,%d %d",data2ae3Cmd,data2ae4Cmd,handle);\r
// }\r
}\r
+void free_ble_data(void)//以防断开蓝牙没有释放数据类型\r
+{\r
+ totalpack = 0;\r
+ muiltFlag = 0; \r
+ packdataLen = 0;\r
+ totalDataLen = 0;\r
+ if(bigDataBuf != NULL){\r
+ free(bigDataBuf);\r
+ }\r
+ if(recvData != NULL){\r
+ free(recvData);\r
+ }\r
+}\r
//接收app下发的原始数据 \r
void revBleOldData(uint8_t *buf, uint16_t event_size,uint16_t handle)//每包的数据大小\r
{\r