修改通讯录为固定长度读取,增加异常判断 62/1 62/head
authorhcj <1224667075@qq.com>
Mon, 22 Apr 2024 02:53:24 +0000 (10:53 +0800)
committerhcj <1224667075@qq.com>
Mon, 22 Apr 2024 02:53:24 +0000 (10:53 +0800)
code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h
code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c
code/sdk/drivers/peripheral/utils/custom_utils.c

index 3da92dc..a3d0521 100644 (file)
 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;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];
+            //("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);
+            {
+                
+                memcpy(addressbook_t.Contact_t[j].name,&buf[offset],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<2;i++)
+            { 
+
+                
+                memset(addressbook_t.Contact_t[j].phone_number_t[i].number,0,NUMBER_LEN);
+               
+                memcpy(addressbook_t.Contact_t[j].phone_number_t[i].number,&buf[offset],NUMBER_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+NUMBER_LEN+1;
+            }
+            for(int i=0;i<2;i++)
+            {
+                
+                memset(addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area,0,AREA_LEN);
+
+                memcpy(addressbook_t.Contact_t[j].phone_number_t[i].affiliating_area,&buf[offset],AREA_LEN);
+
+                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+AREA_LEN+1;
+
+                memset(addressbook_t.Contact_t[j].phone_number_t[i].operator_t,0,OPERATOR_LEN);
+
+                memcpy(addressbook_t.Contact_t[j].phone_number_t[i].operator_t,&buf[offset+1],OPERATOR_LEN);
+               
+                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+OPERATOR_LEN+1;
+            }
+        }
+        fclose(fp);
+        if(buf)
+        {
+            free(buf);
+        }
+       
+    }
+
     void write_addressbook_bin_flle()
     {
         FILE *fp= fopen(ADDRESS_BOOK_PATH,"wb+");
@@ -170,40 +267,47 @@ namespace OHOS
         // }
     
         buf[0] =addressbook_t.num;
+        if(buf[0]>20 && buf[0]<0)
+        {
+            buf[0]=0;
+        }
         printf("人数: %d\r\n",buf[0]);
         int offset=1;
         for(int i=0;i<addressbook_t.num;i++)
         {
             buf[offset]= addressbook_t.Contact_t[i].sex;
-            offset=offset+1;
             printf("性别 %d\r\n",buf[offset]);
-            buf[offset]=strlen(addressbook_t.Contact_t[i].name)+1;
-            printf("写入名字长度: %d\r\n",buf[offset]);
-            memcpy(&buf[offset+1],addressbook_t.Contact_t[i].name,buf[offset]);
-            printf("写入名字: %s\r\n",&buf[offset+1]);
-            offset=offset+1+strlen(addressbook_t.Contact_t[i].name)+1;
+            offset=offset+1;
+            //buf[offset]=NAME_LEN;//strlen(addressbook_t.Contact_t[i].name)+1;
+            //printf("写入名字长度: %d\r\n",buf[offset]);
+            memcpy(&buf[offset],addressbook_t.Contact_t[i].name,NAME_LEN);
+            printf("写入名字: %s\r\n",&buf[offset]);
+            offset=offset+NAME_LEN+1;
 
             buf[offset]=addressbook_t.Contact_t[i].phone_num;
+            if(buf[offset]>2)
+            {
+                buf[offset]=2;
+            }
             printf("写入号码个数: %d\r\n",buf[offset]);
             offset=offset+1;
-            for(int j=0;j<addressbook_t.Contact_t[i].phone_num;j++)
+            for(int j=0;j<2;j++)
             {
-                buf[offset]=strlen(addressbook_t.Contact_t[i].phone_number_t[j].number)+1;
-                memcpy(&buf[offset+1],addressbook_t.Contact_t[i].phone_number_t[j].number,buf[offset]);
-                printf("写入号码: %s\r\n",&buf[offset+1]);
-                offset=offset+1+strlen(addressbook_t.Contact_t[i].phone_number_t[j].number)+1;
+                memcpy(&buf[offset],addressbook_t.Contact_t[i].phone_number_t[j].number,NUMBER_LEN);
+                printf("写入号码: %s\r\n",&buf[offset]);
+                offset=offset+NUMBER_LEN+1;
             }
-            for(int j=0;j<addressbook_t.Contact_t[i].phone_num;j++)
+            for(int j=0;j<2;j++)
             {
-                buf[offset]=strlen(addressbook_t.Contact_t[i].phone_number_t[j].affiliating_area)+1;
-                memcpy(&buf[offset+1],addressbook_t.Contact_t[i].phone_number_t[j].affiliating_area,buf[offset]);
-                printf("写入运营商: %s\r\n",&buf[offset+1]);
-                offset=offset+1+strlen(addressbook_t.Contact_t[i].phone_number_t[j].affiliating_area)+1;
-
-                buf[offset]=strlen(addressbook_t.Contact_t[i].phone_number_t[j].operator_t)+1;
-                memcpy(&buf[offset+1],addressbook_t.Contact_t[i].phone_number_t[j].operator_t,buf[offset]);
-                printf("写入所属地: %s\r\n",&buf[offset+1]);
-                offset=offset+1+strlen(addressbook_t.Contact_t[i].phone_number_t[j].operator_t)+1;
+                //buf[offset]=strlen(addressbook_t.Contact_t[i].phone_number_t[j].affiliating_area)+1;
+                memcpy(&buf[offset],addressbook_t.Contact_t[i].phone_number_t[j].affiliating_area,AREA_LEN);
+                printf("写入运营商: %s\r\n",&buf[offset]);
+                offset=offset+AREA_LEN+1;
+
+                //buf[offset]=strlen(addressbook_t.Contact_t[i].phone_number_t[j].operator_t)+1;
+                memcpy(&buf[offset],addressbook_t.Contact_t[i].phone_number_t[j].operator_t,OPERATOR_LEN);
+                printf("写入所属地: %s\r\n",&buf[offset]);
+                offset=offset+OPERATOR_LEN+1;
             }
         }
         fwrite((void *)buf,1,offset,fp);
index 484461b..24777cc 100644 (file)
@@ -75,8 +75,12 @@ char *addressbook(void)//获取通讯录保存文件地址路径
 {
     return ADDRESS_BOOK_PATH;
 }
-void addressbookToRead(void)//转化用于·c文件
+
+void addressbookToRead(char *buf)//转化用于·c文件
 {
+    if(buf!=NULL)
+    OHOS::read_addressbook_to_struct(buf);
+    else
     OHOS::read_addressbook_bin_file();
     return;
 }
index 6c7795a..134204b 100644 (file)
@@ -71,7 +71,7 @@ uint8_t ble_is_ready(void);
 void set_ble_falg(bool falg);
 uint8_t ble_is_connect_ready(void);
 char *addressbook(void);
-void addressbookToRead(void);
+void addressbookToRead(char*);
 void  addressbookTowrite(void);
 const char *get_health_data_path(void);
 void add_addressbookToRead(char *data);
index 22eab09..bdc4bbe 100644 (file)
@@ -1889,17 +1889,18 @@ void getAPPaddressbook(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalD
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\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
+        // 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
+                \r
+        //     }\r
+        // }\r
+        addressbookToRead((char*)crcnum);\r
         value[17] = 0x01;\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
@@ -2390,6 +2391,7 @@ static void DeleteFileTypeCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
     }\r
 }\r
 //开启指定运动模式\r
+static training_ble training_ble_data;\r
 static void OpenSportModeCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
     uint8_t value[19];\r
@@ -2405,8 +2407,10 @@ static void OpenSportModeCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *
     memcpy(value+15,&tmp_data,2);\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
-        uint8_t sportMode = crcnum[0];//运动类型 0 健走 1跑步 2骑行 3\r
-\r
+        training_ble_data.sportType= crcnum[0];//运动类型 0 健走 1跑步 2骑行 3\r
+        training_ble_data.controlmd= START;\r
+        printf("开启指定运动%d\r\n",crcnum[0]);\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,2);\r
         value[17] = 1; //1 操作成功 2 操作失败\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
@@ -2433,6 +2437,12 @@ static void StopSportModeCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *
     memcpy(value+15,&tmp_data,2);\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
+       \r
+        training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3\r
+        training_ble_data.controlmd= END;\r
+        printf("结束运动\r\n");\r
+\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,2);\r
         value[17] = 1; //1 操作成功 2 操作失败\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
@@ -2639,6 +2649,23 @@ static void GetSportPasueResetCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint
     if(Check_CRC(crcnum,len,crcvalue))//\r
     {\r
         uint8_t PauseStop = crcnum[0];//0 暂停 1恢复\r
+        if(PauseStop==0)\r
+        {\r
+            training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3\r
+            training_ble_data.controlmd= STOP;\r
+            printf("运动暂停\r\n");\r
+\r
+            CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,2);\r
+        }\r
+        else\r
+        {\r
+            training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3\r
+            training_ble_data.controlmd= RECOVER;\r
+            printf("运动恢复\r\n");\r
+\r
+            CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,2);\r
+\r
+        }\r
         value[17] = 1;\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
@@ -3944,95 +3971,54 @@ uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度
 \r
 \r
 \r
-void Read_spo2_file_buf_Data(uint8_t num)\r
+void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len,char *data_item)\r
 {\r
     sendbigDataBufState = true;//分包同步数据不允许打断\r
     char *buf=(char *)malloc(sizeof(char)*512);\r
-\r
-    const char *path=get_health_data_path();\r
-    FILE *fp= fopen(path,"r+");\r
-    if(fp==NULL)\r
+    const char *path=NULL;\r
+    switch (id)\r
     {\r
-        send_big_data(1,NULL,0,0,1,1,0x41);\r
-        printf("打开文件失败%s\r\n",path);\r
-        return;\r
-    }\r
-    int ret=fread(buf,1,512,fp);\r
-    uint8_t count=1;\r
-    while (ret==512)\r
-    {   \r
-        buf=realloc(buf,512*count+512);\r
-        ret=fread(buf+512*count,1,512,fp);\r
-        count++;\r
-    }\r
-    cJSON *heart_data=cJSON_Parse(buf);\r
-    free(buf);\r
-    printf("读文件\r\n");\r
-    if(heart_data==NULL)\r
-    {\r
-        printf("解析失败\r\n");\r
-    }\r
-    cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,"spo2_data_list");\r
-    int item_num=cJSON_GetArraySize(heart_data_list);\r
-    char *send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN);\r
-    int send_len=0;\r
-    uint32_t Packet_id=1;\r
-    uint16_t packet_total;\r
-    if(item_num%96==0)\r
-    {\r
-        packet_total=item_num/96;\r
-    }\r
-    else\r
-    {\r
-         packet_total=item_num/96+1;\r
+        case 0x40://同步心率历史数据\r
+            path=get_health_data_path();\r
+            break;\r
+        case 0x41://同步血氧历史数据\r
+            path=NULL;\r
+            break;\r
+        case 0x43: //同步步数历史数据\r
+            path=NULL;\r
+            break;\r
+        case 0x44://同步燃脂时间数据\r
+            path=NULL;\r
+            break;\r
+        case 0x45://同步站立历史数据\r
+            path=NULL;\r
+            break;\r
+        case 0x46://同步卡路里历史数据\r
+            path=NULL;   \r
+            break;\r
+        case 0x47://同步距离历史数据\r
+            path=NULL;    \r
+            break;\r
+        case 0x49://同步基础训练历史数据\r
+            path=NULL;   \r
+            break;\r
+        case 0x4b://睡眠历史数据\r
+            path=NULL;\r
+            break;\r
     }\r
-   for(int i=0;i<item_num;i++)\r
+    if(path==NULL)\r
     {\r
-        cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i);\r
-        uint32 timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint;\r
-        uint8_t vale=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint;\r
-        printf("heart_value :%d\r\n",vale);\r
-        printf("timestamp :%d\r\n",timestamp);\r
-        memcpy(send_buf+send_len,&timestamp,4);\r
-        send_len+=4;\r
-        memcpy(send_buf+send_len,&vale,1);\r
-        send_len+=1;\r
-        \r
-        if(((i+1)%num==0 && i!=0) || (item_num-1==i))\r
-        {\r
-            //发送数据\r
-            if(item_num-1==i)\r
-            {\r
-                printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len);\r
-                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41);\r
-                free(send_buf);\r
-                sendbigDataBufState=false;\r
-\r
-            }else\r
-            {\r
-                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41);\r
-                free(send_buf);\r
-                send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN);\r
-                send_len=0;\r
-                Packet_id++;\r
-            }\r
-        }\r
-        send_buf=realloc(send_buf,i*5+10);\r
+        send_big_data(1,NULL,0,0,1,1,id);\r
+        sendbigDataBufState = false;//分包同步数据不允许打断\r
+        return;\r
     }\r
-    cJSON_free(heart_data);\r
     \r
-}\r
-\r
-void Read_heart_file_buf_Data(uint8_t num)\r
-{\r
-    sendbigDataBufState = true;//分包同步数据不允许打断\r
-    char *buf=(char *)malloc(sizeof(char)*512);\r
-\r
-    const char *path=get_health_data_path();\r
     FILE *fp= fopen(path,"r+");\r
     if(fp==NULL)\r
     {\r
-        send_big_data(1,NULL,0,0,1,1,0x40);\r
+        send_big_data(1,NULL,0,0,1,1,id);\r
+        printf("打开文件失败%s\r\n",path);\r
+        sendbigDataBufState = false;//分包同步数据不允许打断\r
         return;\r
     }\r
     int ret=fread(buf,1,512,fp);\r
@@ -4043,14 +4029,14 @@ void Read_heart_file_buf_Data(uint8_t num)
         ret=fread(buf+512*count,1,512,fp);\r
         count++;\r
     }\r
-    printf("读文件\r\n");\r
     cJSON *heart_data=cJSON_Parse(buf);\r
     free(buf);\r
+    printf("读文件\r\n");\r
     if(heart_data==NULL)\r
     {\r
         printf("解析失败\r\n");\r
     }\r
-    cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,"heart_data_list");\r
+    cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,data_item);\r
     int item_num=cJSON_GetArraySize(heart_data_list);\r
     char *send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN);\r
     int send_len=0;\r
@@ -4064,7 +4050,7 @@ void Read_heart_file_buf_Data(uint8_t num)
     {\r
          packet_total=item_num/num+1;\r
     }\r
-    for(int i=0;i<item_num;i++)\r
+   for(int i=0;i<item_num;i++)\r
     {\r
         cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i);\r
         uint32 timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint;\r
@@ -4073,8 +4059,8 @@ void Read_heart_file_buf_Data(uint8_t num)
         printf("timestamp :%d\r\n",timestamp);\r
         memcpy(send_buf+send_len,&timestamp,4);\r
         send_len+=4;\r
-        memcpy(send_buf+send_len,&vale,1);\r
-        send_len+=1;\r
+        memcpy(send_buf+send_len,&vale,single_data_len);\r
+        send_len+=single_data_len;\r
         \r
         if(((i+1)%num==0 && i!=0) || (item_num-1==i))\r
         {\r
@@ -4082,13 +4068,13 @@ void Read_heart_file_buf_Data(uint8_t num)
             if(item_num-1==i)\r
             {\r
                 printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len);\r
-                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
+                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id);\r
                 free(send_buf);\r
                 sendbigDataBufState=false;\r
 \r
             }else\r
             {\r
-                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
+                send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id);\r
                 free(send_buf);\r
                 send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN);\r
                 send_len=0;\r
@@ -4108,38 +4094,57 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue)
     if(Check_CRC(crcnum+17,len-18,crcvalue))\r
     {\r
         bleSendTypeID=crcnum[2];\r
+        int num;\r
         switch (crcnum[2])\r
         {\r
             case 0x40://同步心率历史数据\r
                 EACH_DATA_LEN = HEART_DATA_LEN;\r
-                int num=(ble_nus_max_data_len-18)/HEART_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/HEART_DATA_LEN;\r
                 printf("同步心率数据,每包最多:%d 条数据\r\n",num);\r
-                Read_heart_file_buf_Data(num);\r
+                Read_file_buf_send_bin_Data(num,0x40,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x41://同步血氧历史数据\r
                 printf("同步血氧数据\r\n");\r
                 EACH_DATA_LEN = SPO2_DATA_LEN;\r
-                Read_spo2_file_buf_Data(num);\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                 Read_file_buf_send_bin_Data(num,0x41,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x43: //同步步数历史数据\r
                 EACH_DATA_LEN = STEP_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                 Read_file_buf_send_bin_Data(num,0x43,EACH_DATA_LEN,"heart_data_list");\r
+\r
                 break;\r
             case 0x44://同步燃脂时间数据\r
                 EACH_DATA_LEN = FATTIME_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                Read_file_buf_send_bin_Data(num,0x44,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x45://同步站立历史数据\r
                 EACH_DATA_LEN = STAND_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                 Read_file_buf_send_bin_Data(num,0x45,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x46://同步卡路里历史数据\r
                 EACH_DATA_LEN = KCAL_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                Read_file_buf_send_bin_Data(num,0x46,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x47://同步距离历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                Read_file_buf_send_bin_Data(num,0x47,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x49://同步基础训练历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                Read_file_buf_send_bin_Data(num,0x49,EACH_DATA_LEN,"heart_data_list");\r
                 break;\r
             case 0x4b://睡眠历史数据\r
+                EACH_DATA_LEN = DIS_DATA_LEN;\r
+                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
+                Read_file_buf_send_bin_Data(num,0x4b,EACH_DATA_LEN,"heart_data_list");\r
+\r
                 break;\r
             default:\r
                 break;\r
index eec2193..32517d7 100755 (executable)
@@ -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},
index 8ed2104..e26c34e 100644 (file)
@@ -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");