From: hcj <1224667075@qq.com> Date: Mon, 22 Apr 2024 02:53:24 +0000 (+0800) Subject: 修改通讯录为固定长度读取,增加异常判断 X-Git-Tag: release_V1.2.70_20241020_135402~1137^2~7 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=b45f346499891bb12b31c36e4c72a337b74e7cd9;p=mirrors%2FFD230.git 修改通讯录为固定长度读取,增加异常判断 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h b/code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h index cc2b5eb86..15e643c3c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h @@ -35,6 +35,7 @@ struct addressbook struct Contact Contact_t[20]; }; +void read_addressbook_to_struct(char *buf); void read_addressbook_bin_file(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp b/code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp index 3da92dc6a..a3d0521b2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp @@ -20,31 +20,37 @@ namespace OHOS { struct addressbook addressbook_t; - static char *buf = NULL; - void read_addressbook_bin_file() + //static char *buf = NULL; + void read_addressbook_to_struct(char *buf) { // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file"); - FILE *fp= fopen(ADDRESS_BOOK_PATH,"rb+"); - if(fp==NULL) - { - fp= fopen(ADDRESS_BOOK_PATH,"wb+"); - fclose(fp); - return; - } - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file!!!!!!"); - buf = (char *)malloc(512); + // FILE *fp= fopen(ADDRESS_BOOK_PATH,"rb+"); + // if(fp==NULL) + // { + // fp= fopen(ADDRESS_BOOK_PATH,"wb+"); + // fclose(fp); + // return; + // } + // // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file!!!!!!"); + // buf = (char *)malloc(512); - 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; - } + // 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; + // } int num=buf[0];//人数 + if(num>20) + { + num=0; + printf("异常全部清除\r\n"); + return; + } printf("人数: %d\r\n",num); addressbook_t.num=num; int offset=1; @@ -126,11 +132,11 @@ namespace OHOS offset=offset+yun+1; } } - fclose(fp); - if(buf) - { - free(buf); - } + //fclose(fp); + // if(buf) + // { + // free(buf); + // } } void get_phone_addrss_name(char *name,const char *phone) @@ -155,6 +161,97 @@ namespace OHOS return; } + void read_addressbook_bin_file() + { + FILE *fp= fopen(ADDRESS_BOOK_PATH,"rb+"); + if(fp==NULL) + { + return; + } + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_addressbook_bin_file!!!!!!"); + char* buf = (char *)malloc(512); + + 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; + } + + int num=buf[0];//人数 + if(num>20 && num<0) + { + num=0; + printf("异常全部清除\r\n"); + return; + } + printf("人数: %d\r\n",num); + addressbook_t.num=num; + int offset=1; + for (int j=0;j20 && buf[0]<0) + { + buf[0]=0; + } printf("人数: %d\r\n",buf[0]); int offset=1; for(int i=0;i2) + { + buf[offset]=2; + } printf("写入号码个数: %d\r\n",buf[offset]); offset=offset+1; - for(int j=0;jvalueint; - uint8_t vale=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint; - printf("heart_value :%d\r\n",vale); - printf("timestamp :%d\r\n",timestamp); - memcpy(send_buf+send_len,×tamp,4); - send_len+=4; - memcpy(send_buf+send_len,&vale,1); - send_len+=1; - - if(((i+1)%num==0 && i!=0) || (item_num-1==i)) - { - //发送数据 - if(item_num-1==i) - { - printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len); - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41); - free(send_buf); - sendbigDataBufState=false; - - }else - { - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41); - free(send_buf); - send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN); - send_len=0; - Packet_id++; - } - } - send_buf=realloc(send_buf,i*5+10); + send_big_data(1,NULL,0,0,1,1,id); + sendbigDataBufState = false;//分包同步数据不允许打断 + return; } - cJSON_free(heart_data); -} - -void Read_heart_file_buf_Data(uint8_t num) -{ - sendbigDataBufState = true;//分包同步数据不允许打断 - char *buf=(char *)malloc(sizeof(char)*512); - - const char *path=get_health_data_path(); FILE *fp= fopen(path,"r+"); if(fp==NULL) { - send_big_data(1,NULL,0,0,1,1,0x40); + send_big_data(1,NULL,0,0,1,1,id); + printf("打开文件失败%s\r\n",path); + sendbigDataBufState = false;//分包同步数据不允许打断 return; } int ret=fread(buf,1,512,fp); @@ -4043,14 +4029,14 @@ void Read_heart_file_buf_Data(uint8_t num) ret=fread(buf+512*count,1,512,fp); count++; } - printf("读文件\r\n"); cJSON *heart_data=cJSON_Parse(buf); free(buf); + printf("读文件\r\n"); if(heart_data==NULL) { printf("解析失败\r\n"); } - cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,"heart_data_list"); + cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,data_item); int item_num=cJSON_GetArraySize(heart_data_list); char *send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN); int send_len=0; @@ -4064,7 +4050,7 @@ void Read_heart_file_buf_Data(uint8_t num) { packet_total=item_num/num+1; } - for(int i=0;ivalueint; @@ -4073,8 +4059,8 @@ void Read_heart_file_buf_Data(uint8_t num) printf("timestamp :%d\r\n",timestamp); memcpy(send_buf+send_len,×tamp,4); send_len+=4; - memcpy(send_buf+send_len,&vale,1); - send_len+=1; + memcpy(send_buf+send_len,&vale,single_data_len); + send_len+=single_data_len; if(((i+1)%num==0 && i!=0) || (item_num-1==i)) { @@ -4082,13 +4068,13 @@ void Read_heart_file_buf_Data(uint8_t num) if(item_num-1==i) { printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len); - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40); + send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id); free(send_buf); sendbigDataBufState=false; }else { - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40); + send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id); free(send_buf); send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN); send_len=0; @@ -4108,38 +4094,57 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) if(Check_CRC(crcnum+17,len-18,crcvalue)) { bleSendTypeID=crcnum[2]; + int num; switch (crcnum[2]) { case 0x40://同步心率历史数据 EACH_DATA_LEN = HEART_DATA_LEN; - int num=(ble_nus_max_data_len-18)/HEART_DATA_LEN; + num=(ble_nus_max_data_len-18)/HEART_DATA_LEN; printf("同步心率数据,每包最多:%d 条数据\r\n",num); - Read_heart_file_buf_Data(num); + Read_file_buf_send_bin_Data(num,0x40,EACH_DATA_LEN,"heart_data_list"); break; case 0x41://同步血氧历史数据 printf("同步血氧数据\r\n"); EACH_DATA_LEN = SPO2_DATA_LEN; - Read_spo2_file_buf_Data(num); + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x41,EACH_DATA_LEN,"heart_data_list"); break; case 0x43: //同步步数历史数据 EACH_DATA_LEN = STEP_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x43,EACH_DATA_LEN,"heart_data_list"); + break; case 0x44://同步燃脂时间数据 EACH_DATA_LEN = FATTIME_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x44,EACH_DATA_LEN,"heart_data_list"); break; case 0x45://同步站立历史数据 EACH_DATA_LEN = STAND_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x45,EACH_DATA_LEN,"heart_data_list"); break; case 0x46://同步卡路里历史数据 EACH_DATA_LEN = KCAL_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x46,EACH_DATA_LEN,"heart_data_list"); break; case 0x47://同步距离历史数据 EACH_DATA_LEN = DIS_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x47,EACH_DATA_LEN,"heart_data_list"); break; case 0x49://同步基础训练历史数据 EACH_DATA_LEN = DIS_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x49,EACH_DATA_LEN,"heart_data_list"); break; case 0x4b://睡眠历史数据 + EACH_DATA_LEN = DIS_DATA_LEN; + num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; + Read_file_buf_send_bin_Data(num,0x4b,EACH_DATA_LEN,"heart_data_list"); + break; default: break; diff --git a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c index eec2193aa..32517d7b1 100755 --- a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c +++ b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c @@ -26,8 +26,11 @@ static const TopicToCore topicToCoreArray[] = { {TOPIC_EVENT_STEPDATA_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1}, {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1}, +#ifdef CYWEE_SPORT {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_INACTIVITY_UPDATE, A_CORE_MASK, 1}, + {TOPIC_EVENT_BLE_TRAINING,A_CORE_MASK,1}, +#endif #ifdef SUPPORT_SPO2_NOTIFICATION {TOPIC_EVENT_SPO2_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_START_HRS_MONITORING, A_CORE_MASK, 1}, diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 8ed2104ee..e26c34e10 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -225,7 +225,7 @@ void startup_post_init_task(void) initializeRaiseToWake(); LOS_Msleep(5000); - addressbookToRead(); + addressbookToRead(NULL); if ( poweron_cat1_on_bootup_flag() ) { PRINT("PowerOn Cat1 !\r\n");