协议接收函数已经验证,取消以前的接收方案
authorSnickerSun <snickersun@163.com>
Fri, 24 May 2024 12:35:08 +0000 (20:35 +0800)
committerSnickerSun <snickersun@163.com>
Fri, 24 May 2024 12:35:08 +0000 (20:35 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h

index 36dd0d8..b8ac042 100644 (file)
@@ -371,8 +371,6 @@ uint8_t cmd_data[17];
 uint8_t *recvData;\r
 #include "los_memory.h"\r
 \r
-\r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
 #define MAX_BLE_MSG_PACKAGE_LEN (1024*5)  //包缓存最大5k\r
 #define BLE_MSG_TMP_FILE_NAME "/user/userdata/ble_tmp_buf_%04X"\r
 typedef struct \r
@@ -401,27 +399,6 @@ static ble_read_data handle_l[MAX_HANDLE_NUM]={0};
 errcode_t cancel_recv_file(ble_read_data *buffer_handle);\r
 \r
 \r
-#else\r
-\r
-typedef struct \r
-{\r
-    uint8_t *data;\r
-    int handle;\r
-    int data_len ;\r
-    int totalDataLen;\r
-    uint8_t cmd_data[17];\r
-    uint8_t crcvalue;\r
-} ble_read_data;\r
-\r
-#define MAX_HANDLE_NUM 10\r
-//LITE_OS_SEC_TEXT_MINOR UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)\r
-//根据特征值分开组合读取的数据,并处理\r
-static ble_read_data handle_l[MAX_HANDLE_NUM]={0};\r
-\r
-#endif\r
-\r
-\r
-\r
 \r
 \r
 \r
@@ -1959,8 +1936,6 @@ void GetWeatherCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,ui
     \r
 }\r
 \r
-\r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
 void getUserInfo(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
 {\r
     \r
@@ -2011,67 +1986,7 @@ void getUserInfo(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *data,uint16_
         ble_reply_cmd(USER_INFOR_CMD,0);//crc error\r
     }\r
 }\r
-#else\r
-//APP下发设置用户数据\r
-void getUserInfo(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
-{\r
-    \r
-    // 用户数据同步死机,\r
-    uint8_t value[19];\r
-    memset(value,0,19);\r
-    uint32_t tmp = 1;\r
-    value[0] =0x72;\r
-    value[1] =0x02;\r
-    value[2] =0x01;\r
-    memcpy(value+3,&tmp,4);\r
-    memcpy(value+7,&tmp,4);\r
-    memcpy(value+11,&tmp,4);\r
-    memcpy(value+15,&tmp,2);\r
-    if(Check_CRC(data,len,crcvalue))\r
-    {\r
-        printf("getUserInfo:!!!!!!!!\r\n");\r
-        msg_user_info_t user_info={0};\r
-        ble_recv_msg_callback_t func = ble_recv_get_send_msg_callback_func();\r
-        memset(&user_info,0,sizeof(msg_user_info_t));\r
-        \r
-        for(uint8_t i = 0;i<len;i++)\r
-        {\r
-            printf("%x ",data[i]);\r
-        }\r
-        user_info.age = data[0];\r
-        user_info.gender = data[1];\r
-        user_info.height  = data[2];\r
-        printf("getUserInfo:!!!!!!!!5555\r\n");\r
-        memcpy(&user_info.weight,data+3,2);\r
-        //memcpy(data+3,&user_info.weight,2);\r
-        memcpy(&user_info.target_step,data+5,4);\r
-         printf("getUserInfo:!!!!!!!!666\r\n");\r
-        //memcpy(data+5,&user_info.target_step,4);\r
-        memcpy(&user_info.fat_time,data+9,2);\r
-        user_info.target_stand = data[11];\r
-        user_info.timeformat = data[12];\r
-        uint32_t target_kcal = 0;\r
-        memcpy(&target_kcal,data+13,2);\r
-        printf("getUserInfo:!!!!!!!!99\r\n");\r
-        set_goal_caloriescount(target_kcal);\r
-        printf("getUserInfo:!!!!!!!!22\r\n");\r
-        uint8_t target_km = data[15];\r
-        printf("getUserInfo:!!!!!!!!22\r\n");\r
-        set_goal_discount(target_km);\r
-        printf("getUserInfo:!!!!!!!!333\r\n",user_info.age,user_info.gender,user_info.height,user_info.weight,user_info.target_step,user_info.fat_time,user_info.target_stand,\r
-        user_info.timeformat,user_info.timeformat);\r
-        set_user_data(&user_info);\r
-        printf("getUserInfo:!!!!!!!!444\r\n");\r
-        value[17] = 0x01;\r
-        value[18] = Calculate_CRC(value,18);\r
-        sendBleData(value,19);\r
-    }else{\r
-        value[17] = 0x00;\r
-        value[18] = Calculate_CRC(value,18);\r
-        sendBleData(value,19);\r
-    }\r
-}\r
-#endif\r
+\r
 //APP下发快捷辅助功能参数\r
 void get_auxil_fun_parm(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
 {\r
@@ -2207,23 +2122,15 @@ void getAPPaddressbook(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalDat
 \r
 }\r
 \r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
 //02 类型\r
 void type2AE4Data(ble_read_data *buffer_handle,uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
-#else\r
-void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
-#endif\r
 {\r
     uint16_t typeID = buf_cmd[1]*256+buf_cmd[2];\r
     printf("type2AE4Data typeID:0x%x\r\n",typeID);\r
     switch (typeID) //ID\r
     {\r
         case USER_INFOR_CMD://app下发的获取用户信息\r
-        #if USE_PROTOCOL_EN_DE_BY_SNICKER\r
             getUserInfo(buffer_handle,typeID,data,datalen,totalData,crcvalue);\r
-        #else\r
-            getUserInfo(typeID,data,datalen,totalData,crcvalue);\r
-        #endif\r
             break;\r
         case SET_PHONE_INFOR_CMD://app下发的下发的手机信息\r
             getPhoneInfo(typeID,data,datalen,totalData,crcvalue);\r
@@ -2629,11 +2536,7 @@ static void GetSwitchMessCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to
     }\r
 }\r
 //撤销当前文件传输 1 OTA 2MP3 3表盘 3天气 5闹钟\r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
 static void RemoveFileCmd(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
-#else\r
-static void RemoveFileCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
-#endif\r
 {\r
     uint8_t value[19];\r
     memset(value,0,19);\r
@@ -2654,9 +2557,8 @@ static void RemoveFileCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
 \r
-        #if USE_PROTOCOL_EN_DE_BY_SNICKER\r
         cancel_recv_file(buffer_handle);\r
-        #endif        \r
+\r
     }else\r
     {\r
         value[17] = 0;\r
@@ -4062,11 +3964,7 @@ len 就是data的长度
 *totaldata:总的数据内容 包含包头和校验预览做接口是用  如果要计算totaldata的长度直接是len+17+1 就是加上包头和校验和\r
 crcvalue;数据的校验和 不包含包头和校验和的计算结果\r
 */\r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
 void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *totaldata,uint8_t crcvalue)\r
-#else\r
-void type2AE3Data(uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *totaldata,uint8_t crcvalue)\r
-#endif\r
 {\r
     uint16_t cmd = cmd_buf[1]*256+cmd_buf[2];\r
     printf("typeHexOneData:0x%04X\r\n",cmd);\r
@@ -4098,9 +3996,7 @@ void type2AE3Data(uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *tota
             GetSwitchMessCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
         case REVOKE_CURR_FILE_TRANS_CMD://撤销文件传输\r
-        #if USE_PROTOCOL_EN_DE_BY_SNICKER\r
             RemoveFileCmd(buffer_handle,cmd,data,datalen,totaldata,crcvalue);\r
-        #endif\r
             break;\r
         case GET_SPECIF_TYPE_FILE_CMD://获取指定类型文件目录 \r
             GetFileTypeCmd(data,datalen); //\r
@@ -4875,10 +4771,6 @@ void bleRecvANCSData(uint8_t *data, uint16_t data_size,uint8_t *buf_cmd,uint8_t
     }\r
 }\r
 \r
-\r
-#if USE_PROTOCOL_EN_DE_BY_SNICKER\r
-\r
-\r
 /**\r
  * less than 20bytes msg reply\r
 */\r
@@ -5487,177 +5379,6 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle)
     \r
 }\r
 \r
-void free_ble_data(void)//以防断开蓝牙没有释放数据类型\r
-{\r
-    return;\r
-    totalpack = 0;\r
-    muiltFlag = 0; \r
-    packdataLen = 0;\r
-    totalDataLen = 0;\r
-    ANCSBigBufFlag = 0;\r
-    recvBigDataBufState = false;\r
-    sendbigDataBufState = false;\r
-    \r
-}\r
-#else \r
-\r
-\r
-\r
-//长数据解析\r
-void bleLongRecvData(uint8_t *data, uint16_t data_size,uint8_t *buf_cmd,uint8_t *totalData,uint8_t crcvalue)//buf_cmd 指令前17个字节数据\r
-{\r
-    uint8_t type=buf_cmd[1];\r
-    printf("type:%d %d data_size:%d data:%x crcvalue:%x\r\n",buf_cmd[0],type,data_size,data,crcvalue);\r
-\r
-    switch (type)\r
-    {\r
-        case 0x02://获取手机信息\r
-            type2AE4Data(buf_cmd,data,data_size,totalData,crcvalue);\r
-            break;\r
-        case 0x01:\r
-            type2AE3Data(buf_cmd,data,data_size,totalData,crcvalue);\r
-            break;\r
-        case 0x03://\r
-            type2AE1Data(buf_cmd,data,data_size,totalData,crcvalue);\r
-            break;\r
-        case 0x04:\r
-            break;\r
-        default:\r
-            break;\r
-    }\r
-}\r
-\r
-\r
-void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle)\r
-{\r
-\r
-    if(sendbigDataBufState == true)//正在发送大数据不接收任何app指令下发的数据\r
-    {\r
-        return;\r
-    }\r
-    printf("bleDataRecv handle:%d\r\n",handle); \r
-\r
-    if(sendbigDataBufState == true)//正在发送大数据不接收任何app指令下发的数据\r
-    {\r
-        return;\r
-    }\r
-    printf("bleDataRecv handle:%d\r\n",handle);\r
-    ble_read_data* read_data_tmp = NULL;\r
-    for(int i = 0;i<MAX_HANDLE_NUM;i++)\r
-    {\r
-        if(handle_l[i].handle == 0)//第一次用 \r
-        {\r
-            handle_l[i].handle = handle;            \r
-\r
-        }\r
-        if(handle_l[i].handle == handle)//以前用过 2AE4 2AE5 2AE1 2AE3 2AE0 \r
-        {\r
-            if((totalData[0]==0x4a || totalData[0]==0x73)&& totalData[1] <= 0x09){//多包第一包\r
-                if(handle_l[i].data)//保证第一包时释放buf\r
-                {\r
-                    ym_free(handle_l[i].data);\r
-                    handle_l[i].data = NULL;\r
-                    memset(&handle_l[i],0,sizeof(ble_read_data));\r
-                    handle_l[i].handle = handle;\r
-                }\r
-            }\r
-            if(handle_l[i].data == NULL )//释放过的\r
-            {\r
-                printf("bleDataRecv!!!!!!!!!!!!!recv %x %x\r\n",totalData[0],totalData[1]);\r
-                if(event_size <= 17 || !((totalData[0] ==0x4a || totalData[0] == 0x73) && totalData[1] <= 0x09))//第一包的数据一定要大于17个字节并且第一包的数据头必须为0x73 或者0x4a 并且类型小于0x09 类型根据协议可自行增加或者减少\r
-                {\r
-                    break;\r
-                }\r
-                memcpy(&totalDataLen,totalData+7,4);//总的数据大小\r
-                handle_l[i].totalDataLen = totalDataLen;\r
-                \r
-                \r
-                // printf("bleDataRecv!!!!!!!%d\r\n",totalDataLen);\r
-                if(totalDataLen > event_size-17)//多包数据第一包处理,大于一包的数据长度 514-17=494\r
-                {\r
-                    packdataLen = event_size-17;//多包数据第一包数据不带CRC校验和的\r
-                    handle_l[i].data = ym_malloc(totalDataLen+1);\r
-                    if(handle_l[i].data != NULL){\r
-                        printf("bleDataRecv long data %d\r\n",totalDataLen);\r
-                        if(handle_l[i].totalDataLen < packdataLen)\r
-                        {\r
-                            printf("packdataLen error!!!!!!!%d\r\n",packdataLen);\r
-                            packdataLen=handle_l[i].totalDataLen;\r
-                        }\r
-                        memcpy(handle_l[i].data,totalData+17,packdataLen);//从第十七个字节开始接收数据data\r
-                        handle_l[i].data_len = packdataLen;//当前包的数据长度\r
-                        memset(handle_l[i].cmd_data,0,17);\r
-                        memcpy(handle_l[i].cmd_data,totalData,17);\r
-                    } \r
-                }else{//一包数据\r
-                    printf("bleDataRecv short data %d\r\n",totalDataLen);\r
-                    packdataLen = event_size-18;\r
-                    if(totalDataLen != 0)\r
-                    {\r
-                        handle_l[i].data =ym_malloc(totalDataLen+1);\r
-                        memcpy(handle_l[i].data,totalData+17,packdataLen);\r
-                    }\r
-                    memset(handle_l[i].cmd_data,0,17);\r
-                    memcpy(handle_l[i].cmd_data,totalData,17);\r
-                    handle_l[i].crcvalue = totalData[event_size-1];\r
-                    handle_l[i].data_len = packdataLen;\r
-                    read_data_tmp = &handle_l[i];//完整包,遍历后需要处理数据\r
-                }\r
-            }else//多包数据存储\r
-            {\r
-\r
-                uint32_t packStartAddrLen = handle_l[i].data_len;//每一包接收的数据长度起始地址\r
-                handle_l[i].data_len = handle_l[i].data_len+event_size;\r
-                printf("muilt 133333 handle_l[i].data_len:%d\r\n",handle_l[i].data_len);\r
-                if(handle_l[i].data_len >= handle_l[i].totalDataLen)//接收完整的数据\r
-                {\r
-                    handle_l[i].data_len = handle_l[i].data_len -1;//最后一包要减去最后的CRC的那一位\r
-                    //这是最后一包的起始地址\r
-                    if(handle_l[i].totalDataLen -packStartAddrLen < event_size-1)\r
-                    {\r
-                        printf("packStartAddrLen error!!!!!!!%d\r\n",packStartAddrLen);\r
-                        event_size=handle_l[i].totalDataLen-packStartAddrLen;\r
-                    }\r
-                    memcpy(handle_l[i].data+packStartAddrLen,totalData,event_size-1);//为了不把CRC copy到data所以多一步操作\r
-                    handle_l[i].crcvalue = totalData[event_size-1];//最后一个字节为总的数据包的CRC\r
-                    read_data_tmp = &handle_l[i];\r
-                }else{ //还没接收完 有 3 4 5包.........\r
-                    if(handle_l[i].totalDataLen -packStartAddrLen < event_size)\r
-                    {\r
-                        printf("event_size error!!!!!!!%d\r\n",event_size);\r
-                        event_size=handle_l[i].totalDataLen-packStartAddrLen;\r
-                    }\r
-                    memcpy(handle_l[i].data+packStartAddrLen,totalData,event_size); //这是不带CRC数据说明还有下一包直接copy\r
-                }\r
-            }\r
-            break;\r
-        } \r
-        \r
-    }\r
-    if(read_data_tmp)//获取到完整数据,处理数据且释放内存\r
-    {\r
-        printf("pack data start!!!!!\r\n");\r
-        //处理数据..\r
-        if(read_data_tmp->data)\r
-        {\r
-            read_data_tmp->data[read_data_tmp->totalDataLen]=0;\r
-        }\r
-                bleLongRecvData(read_data_tmp->data,read_data_tmp->totalDataLen,read_data_tmp->cmd_data,NULL,read_data_tmp->crcvalue);\r
-        if(read_data_tmp->data)//只有数据不为NULL的才释放\r
-        {\r
-            ym_free(read_data_tmp->data);\r
-        }\r
-        read_data_tmp->data_len = 0;\r
-        read_data_tmp->data = NULL;\r
-        read_data_tmp->totalDataLen = 0;\r
-        //read_data_tmp->handle = 0;\r
-        read_data_tmp->crcvalue = 0;\r
-        memset(read_data_tmp->cmd_data,0,17);\r
-        printf("pack data end!!!!!!\r\n");\r
-    }\r
-\r
-\r
-}\r
 void free_ble_data(void)//以防断开蓝牙没有释放数据类型\r
 {\r
     return;\r
@@ -5671,7 +5392,6 @@ void free_ble_data(void)//以防断开蓝牙没有释放数据类型
     \r
 }\r
 \r
-#endif\r
 \r
 //接收app下发的原始数据 \r
 void revBleOldData(uint8_t *buf, uint16_t event_size,uint16_t handle)//每包的数据大小\r
index 6a6f0ab..3073a46 100644 (file)
@@ -94,12 +94,6 @@ void cameram_send_data(void);
 
 #define FIND_PHONE_CMD 0x0501 //同步睡眠历史数据
 
-
-#define USE_PROTOCOL_EN_DE_BY_SNICKER 1
-
-#if USE_PROTOCOL_EN_DE_BY_SNICKER
-
-
 #define MSG_DIRECTION_RECV 0x73
 #define MSG_DIRECTION_RECV_ANDROID 0x4A
 #define MSG_DIRECTION_SEND 0x72
@@ -143,7 +137,7 @@ errcode_t ble_reply_cmdarr(uint16_t msg_cmd,uint8_t *replydata,uint16_t replydat
 errcode_t ble_reply_msg(uint8_t msg_cmdtype,uint8_t msg_cmdid,uint8_t replydata);
 errcode_t ble_reply_msgarr(uint8_t msg_cmdtype,uint8_t msg_cmdid,uint8_t *replydata,uint16_t replydata_len);
 
-#endif
+
 #pragma pack(1)
 typedef struct
 {