#define AI_TXT_BUF_MAX_LEN 1024*3 //json解析失败\r
\r
\r
+\r
+\r
uint32_t packdataLen = 0;\r
uint32_t totalDataLen = 0;\r
uint8_t totalpack = 0;\r
ble_read_data* ble_read_timer_p=NULL;\r
\r
\r
+//MP3文件重命名\r
+static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name)\r
+{\r
+\r
+ sprintf_s(path,256,"%s/",dir_path);\r
+ uint16_t path_len=strlen(path);\r
+\r
+\r
+ if(strstr(file_name,".mp3"))\r
+ {\r
+ //"光-陈粒.128.mp3"\r
+ printf("%s\r\n",file_name);\r
+ int len=strlen(file_name)-strlen(".mp3");\r
+ for(int i=0;i<len;i++)\r
+ {\r
+ uint8_t Uintdata=0;\r
+ char UintBUF[3]={0};\r
+ //sprintf(UintBUF,"%02X",file_name[i]);\r
+ memcpy_s((void*)&Uintdata,1,(void*)&file_name[i],1);\r
+ sprintf(UintBUF,"%02X",Uintdata);\r
+ printf("%s\r\n",UintBUF);\r
+ memcpy_s(path+path_len,2,UintBUF,2);\r
+ path_len+=2;\r
+ }\r
+ memcpy_s(path+path_len,strlen(".mp3"),".mp3",strlen(".mp3"));\r
+ return ERRCODE_SUCC;\r
+ }\r
+ else\r
+ {\r
+ sprintf_s(path,256,"%s/%s",dir_path,file_name);\r
+ }\r
+ return ERRCODE_FAIL;\r
+ \r
+}\r
\r
\r
#if 1\r
\r
}\r
\r
+\r
+errcode_t sendBleData_zhihui(uint8_t *buf,uint16_t len)\r
+{\r
+ errcode_t ret = ERRCODE_FAIL;\r
+ #ifdef BLE_LOG\r
+ printf("bigDataBufState:%d and sendbigDataBufState %d\r\n",bigDataBufState,sendbigDataBufState);\r
+ #endif\r
+ //if(Bleconnect == true )\r
+ {\r
+ ret = svr_ble_bt_gatts_noyify_zhihui(buf,len);\r
+ }\r
+ return ret;\r
+ \r
+}\r
+\r
+\r
void sendDataNow(uint8_t *buf,uint16_t len)\r
{\r
//if(Bleconnect == true )\r
}\r
}\r
\r
+void send_Data_Now_zh(uint8_t *buf,uint16_t len)\r
+{\r
+ {\r
+ svr_ble_bt_gatts_noyify_zhihui(buf,len);\r
+ }\r
+}\r
+\r
+\r
+\r
void send_big_data(ble_data_type type,char *data, uint16 datalen)\r
{\r
// 动态分配内存空间,防止堆栈溢出\r
uint8_t *buf =NULL;\r
buf = ym_malloc(17 + datalen + 1); \r
- memset_s(buf,500,0,17 + datalen + 1);\r
+ memset_s(buf,ble_nus_max_data_len,0,17 + datalen + 1);\r
if (buf == NULL && datalen!=0) {\r
printf("内存分配失败\n");\r
return;\r
}\r
if(type.Packet_id>=2)\r
{\r
- msleep(10);//多包数据发送增加延迟\r
+ msleep(get_ble_interval()+5);//多包数据发送增加延迟\r
}\r
// 设置消息头部信息\r
buf[0] = 0x72; // 消息头\r
printf("end\r\n");\r
\r
// 根据标志位选择发送数据的方式\r
- \r
+ if(type.type==6)\r
+ {\r
+ send_Data_Now_zh(buf, 17 + datalen + 1);\r
+ }\r
+ else\r
+ {\r
sendDataNow(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据\r
+}\r
+ \r
\r
\r
ym_free(buf); // 释放内存空间\r
value[17] = flag;\r
value[18] = Calculate_CRC(value,18);\r
sendok = sendBleData(value,19);\r
- msleep(50);//增加延时,确保可以成功发送解除绑定\r
+ msleep(3*get_ble_interval());//增加延时,确保可以成功发送解除绑定\r
\r
bd_addr_t addr={0};\r
get_phone_addr(&addr,g_ble_conn_id);\r
sendBuf[17] = set_ok;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
sendBleData(sendBuf,19);\r
- uapi_ble_connect_param_update(50);\r
+ \r
}\r
else\r
{\r
ble_data_type type_={0x01,0x34,file_size,pack,pack_id};\r
send_big_data(type_,data,read_size);\r
}\r
-\r
- //send_big_data(1,data,read_size,file_size,pack_id,pack,0x34,1);\r
pack_id++;\r
- msleep(SEND_AIVOICE_PACKAGE_DELAY);\r
+ \r
\r
} while (read_size==num);\r
free(data);\r
value[17] = 1;//\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
+\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);\r
+ \r
}else\r
{\r
value[17] = 0;\r
value[17] = 1;\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
+\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);\r
+\r
}else\r
{\r
value[17] = 0;\r
memcpy_s(replybuf+sizeof(msg_header_t),replydata_len,replydata,replydata_len); \r
uint8_t crc_value = Calculate_CRC( replybuf, replybuflen - 1);\r
replybuf[ replybuflen - 1 ] = crc_value ; //CRC\r
- errcode_t ret = sendBleData(replybuf,replybuflen);\r
+ errcode_t ret=0;\r
+ if(msg_cmdtype==6)\r
+ {\r
+ ret=sendBleData_zhihui(replybuf,replybuflen);\r
+\r
+ }else\r
+ {\r
+ ret= sendBleData(replybuf,replybuflen);\r
+ }\r
+ \r
+\r
printf("ble_reply_msgarr cmdtype %02X cmdid %02X package %d/%d , len %d,total len %d , data[0] %02X crc %02X\n",\r
reply_cmd_header->cmdtype,\r
reply_cmd_header->cmdid,\r
buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+");\r
printf("create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
\r
- }else{\r
+ }\r
+ else if (buffer_handle->file_recv_stat.file_type == 2)\r
+ {\r
+ char musicpath[64]={0};\r
+ get_music_path(musicpath,64);\r
+ //"/user/userdata/music"\r
+ char filepath[256]={0};\r
+ create_mp3_name(filepath,musicpath,buffer_handle->file_recv_stat.file_name);\r
+\r
+ buffer_handle->file_recv_stat.file = fopen(filepath,"w+");\r
+ printf("filepath %s\r\n",filepath);\r
+ }\r
+ else\r
+ {\r
char filepath[128]={0};\r
if (get_file_recv_file_path(buffer_handle->file_recv_stat.file_name,strlen(buffer_handle->file_recv_stat.file_name),filepath,sizeof(filepath)) == ERRCODE_SUCC)\r
{\r
printf("create file %s error %X\n",buffer_handle->file_recv_stat.file_name,buffer_handle->file_recv_stat.file);\r
} \r
}\r
+\r
+\r
+\r
if (buffer_handle->file_recv_stat.file == NULL)\r
{\r
printf("6185 buffer_handle->file_recv_stat.file \n");\r
buffer_handle->file_recv_stat.received_size = 0;\r
buffer_handle->file_recv_stat.lrcvalue = 0;\r
buffer_handle->receive_file_flag = 1;\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
//进入特殊UI\r
TRANSMIT_DATA=TRANS_OTA_TRANSMITTING;\r
CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
{\r
uint8_t *data = buffer_handle->data+sizeof(msg_header_t);\r
uint16_t datalen = buffer_handle->totalDataLen;\r
- printf("ota_json_file_save %s\n",data);\r
+ printf("MP3_file_save %s\n",data);\r
\r
/**\r
MP3文件信息格式\r
buffer_handle->file_recv_stat.received_size = 0;\r
buffer_handle->file_recv_stat.lrcvalue = 0;\r
buffer_handle->receive_file_flag = 1;\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
\r
buffer_handle->file_recv_stat.received_size = 0;\r
buffer_handle->file_recv_stat.lrcvalue = 0;\r
buffer_handle->receive_file_flag = 1;\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
\r
return ERRCODE_SUCC;\r
\r
\r
//send_big_data(1,data,read_size,file_size,pack_id,pack,id,5);\r
pack_id++;\r
- msleep(50);\r
+ \r
} while (read_size==pack_size);\r
free(data);\r
fclose(fp);\r
}\r
}\r
\r
+void decode_file_checksum_2AE6(ble_read_data *buffer_handle)\r
+{\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);\r
+\r
+ uint8_t msg_crc = get_crc_from_lrc(buffer_handle->lrcvalue);\r
+ if ((msg_crc == buffer_handle->crcvalue) \r
+ || (buffer_handle->cmd_header.direction == MSG_DIRECTION_RECV_ANDROID ))\r
+ {\r
+ uint8_t file_crc = get_crc_from_lrc(buffer_handle->file_recv_stat.lrcvalue);\r
+ uint8_t crc_recv = buffer_handle->data[sizeof(msg_header_t)];\r
+#if 1\r
+ if ((file_crc == crc_recv) ||\r
+ (buffer_handle->cmd_header.direction == MSG_DIRECTION_RECV_ANDROID))\r
+#else\r
+ if (file_crc == crc_recv) \r
+#endif\r
+ {\r
+ ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,1);\r
+ switch(buffer_handle->file_recv_stat.file_type)\r
+ {\r
+ case 1: //ota\r
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_STARTOTA,NULL,0);\r
+ \r
+ TRANSMIT_DATA=TRANS_OTA_SUCC;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ \r
+\r
+ break;\r
+ case 2://mp3\r
+ TRANSMIT_DATA=TRANS_MP3_SUCC;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ \r
+ ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1);\r
+ ble_mp3_list_update();\r
+\r
+ break;\r
+ case 3://dial\r
+ //TODO: 设置成当前下载的表盘\r
+ if (install_dial() == ERRCODE_SUCC)\r
+ {\r
+ //ble_set_dial_by_id(ble_dial_uid);\r
+\r
+ if(ble_dial_uid>5 || ble_dial_file_index==ble_dial_file_count)\r
+ {\r
+ TRANSMIT_DATA= TRANS_DIAL_SUCC;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ //0504\r
+ ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1);\r
+ }\r
+ \r
+\r
+\r
+ // ble_reply_cmd(GET_TRANS_END_CMD,1);\r
+ \r
+ }\r
+ else\r
+ {\r
+ TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
+ ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0);\r
+\r
+ }\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }else{\r
+ ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,2);\r
+ switch (buffer_handle->file_recv_stat.file_type)\r
+ {\r
+ case 1: //ota\r
+ TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ break;\r
+ case 2://mp3\r
+ TRANSMIT_DATA=TRANS_MP3_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
+ break;\r
+ case 3://dial\r
+ TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ \r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
+ }\r
+ }else{\r
+ ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,0);\r
+ switch (buffer_handle->file_recv_stat.file_type)\r
+ {\r
+ case 1: //ota\r
+ TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ break;\r
+ case 2://mp3\r
+ TRANSMIT_DATA=TRANS_MP3_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
+ break;\r
+ case 3://dial\r
+ TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+ CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ buffer_handle->file_recv_stat.recv_file_stat=0; \r
+}\r
\r
void decode_file_checksum(ble_read_data *buffer_handle)\r
{\r
+ uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);\r
\r
uint8_t msg_crc = get_crc_from_lrc(buffer_handle->lrcvalue);\r
if ((msg_crc == buffer_handle->crcvalue) \r
// } \r
// }\r
\r
- case OTA_FILE_SUCC_CMD :\r
- {\r
- decode_file_checksum(buffer_handle);\r
+ case FILE_CHECKSUM_RECV_CMD_ZHIHUI :\r
+ decode_file_checksum_2AE6(buffer_handle);\r
break;\r
- }\r
\r
case OTA_FILE_FAIL_CMD :\r
break;\r
return ERRCODE_FAIL;\r
}\r
}\r
-//MP3文件重命名\r
-static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name)\r
-{\r
-\r
- sprintf_s(path,256,"%s/",dir_path);\r
- uint16_t path_len=strlen(path);\r
\r
-\r
- if(strstr(file_name,".mp3"))\r
- {\r
- //"光-陈粒.128.mp3"\r
- printf("%s\r\n",file_name);\r
- int len=strlen(file_name)-strlen(".mp3");\r
- for(int i=0;i<len;i++)\r
- {\r
- uint8_t Uintdata=0;\r
- char UintBUF[3]={0};\r
- //sprintf(UintBUF,"%02X",file_name[i]);\r
- memcpy_s((void*)&Uintdata,1,(void*)&file_name[i],1);\r
- sprintf(UintBUF,"%02X",Uintdata);\r
- printf("%s\r\n",UintBUF);\r
- memcpy_s(path+path_len,2,UintBUF,2);\r
- path_len+=2;\r
- }\r
- memcpy_s(path+path_len,strlen(".mp3"),".mp3",strlen(".mp3"));\r
- return ERRCODE_SUCC;\r
- }\r
- else\r
- {\r
- sprintf_s(path,256,"%s/%s",dir_path,file_name);\r
- }\r
- return ERRCODE_FAIL;\r
- \r
-}\r
errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t event_size)\r
{\r
\r
/* Gatt Characteristic UUID */\r
//自定义 ota 文件传输特征值\r
#define BLE_ZHIHUI_OTA_ID 0x2ae6\r
+#define BLE_ZHIHUI_OTA_REPLY_ID 0x2ae7\r
\r
#define BLE_CHARACTERISTIC_RECV_ID 0x2ae5\r
#define BLE_CHARACTERISTIC_SNED_SHORT_ID 0x2ae3\r
#define BLE_DEFAULT_NAME_LEN 32\r
#define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
\r
+\r
+\r
#define SWAP_U16(x) ((uint16_t)((((uint16_t)(x) & (uint16_t)0x00ffU) << 8) | \\r
(((uint16_t)(x) & (uint16_t)0xff00U) >> 8)))\r
\r
uint16_t data2ae1Cmd = 0;//安卓消息来电\r
uint16_t data2ae0Cmd = 0;//OTA\r
uint16_t data2ae6Cmd = 0;//自定义OTA \r
+uint16_t data2ae7Cmd = 0;//自定义OTA \r
+\r
\r
#define handle_max_len 40\r
\r
BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY,\r
BLE_ZHIHUI_OTA_ID_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
+\r
+ BLE_ZHIHUI_OTA_REPLY_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,\r
};\r
static uint8_t ble_adv_falg = 0;\r
static bool g_custom_ble_init_flag = false;\r
conn_param.slave_latency = 6; /* param 3: slave_latency */\r
conn_param.timeout_multiplier = 700; /* param 4: timeout_multiplier */\r
int ret = gap_ble_connect_param_update(&conn_param);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters ret: %X\n", ret); \r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters %d ret: %X\n",data,ret); \r
}\r
void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status)\r
{\r
// @else 延迟周期,单位slot @endif */\r
// uint16_t timeout; /*!< @if Eng timeout\r
// @else 超时时间,单位10ms @endif */\r
+//发送连续数据参考此数值进行速度调整\r
+//2*slot\r
+static uint16_t ble_interval=50; \r
+\r
+uint16_t get_ble_interval(void)\r
+{\r
+ return ble_interval;\r
+}\r
+\r
void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,\r
const gap_ble_conn_param_update_t *param)\r
{\r
+ ble_interval=param->interval;\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, \r
"conn_id %d status %d gap_ble_conn_param_update_t interval %d latency%d timeout %d ",conn_id,status,param->interval,param->latency,param->timeout);\r
}\r
}\r
}\r
\r
+\r
+static void srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(uint8_t server_id,uint16_t srv_handle)\r
+{\r
+ errcode_t ret = 0;\r
+ static uint8_t battery_point_val[] = {0x00, 0x00};\r
+ gatts_add_chara_info_t character;\r
+ gatts_add_desc_info_t descriptor;\r
+\r
+ bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &character.chara_uuid);\r
+ character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ character.properties = BLE_ZHIHUI_OTA_REPLY_ID_PROPERTIES;\r
+ character.value_len = (uint16_t)sizeof(battery_point_val);\r
+ character.value = battery_point_val;\r
+\r
+ ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+ if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
+ }\r
+ bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ descriptor.value_len = (uint16_t)sizeof(battery_point_val);\r
+ descriptor.value = battery_point_val;\r
+ \r
+ ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+ if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+ }\r
+\r
+ bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;;\r
+ descriptor.value_len = (uint16_t)sizeof(battery_point_val);\r
+ descriptor.value = battery_point_val;\r
+ \r
+ ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+ if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+ }\r
+}\r
+\r
+\r
static uint8_t g_alipay_character_buf[256] = {0};\r
static void alipay_add_chart_decr_recv_cmd1(uint8_t server_id,uint16_t srv_handle)\r
{\r
srv_ble_add_chart_decr_long_cmd(server_id,srv_handle);\r
srv_ble_add_chart_decr_recv_cmd(server_id,srv_handle);\r
srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle);\r
-\r
+srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle);\r
gatts_start_service(server_id, srv_handle);\r
}\r
if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){\r
\r
bt_uuid_t chara_uuid_data_2ae5 = {0};\r
bts_data_to_uuid_len2(BLE_CHARACTERISTIC_RECV_ID, &chara_uuid_data_2ae5);\r
+\r
bt_uuid_t chara_uuid_data_2ae3 = {0};\r
bts_data_to_uuid_len2(BLE_CHARACTERISTIC_SNED_SHORT_ID, &chara_uuid_data_2ae3);\r
bt_uuid_t chara_uuid_data_2ae4 = {0};\r
bt_uuid_t hid_report_uuid_2ae6 = {0};\r
bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_ID, &hid_report_uuid_2ae6);\r
\r
+bt_uuid_t chara_uuid_data_2ae7 = {0};\r
+ bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &chara_uuid_data_2ae7);\r
+\r
+ if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae7))\r
+ {\r
+ if(data2ae7Cmd==0)\r
+ {\r
+ data2ae7Cmd=result->value_handle;\r
+ }\r
+ Is_value_handle[handle_num]=result->value_handle;\r
+ handle_num++;\r
+ }\r
+\r
\r
if(ble_gatts_cmp_uuid(uuid, &hid_report_uuid_2ae6))\r
{\r
\r
if(ret!=ERRCODE_SUCC)\r
{\r
- msleep(200);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+ g_ble_conn_id, g_ble_server_handle,data_len);\r
+ ble_set_ai_Answer_str("BLE NOTIF ERROR",5);\r
+ }\r
+ \r
+ }\r
+ }\r
+ return ret; \r
+}\r
+\r
+\r
+errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len)//这里是设备数据上报给app手机端\r
+{\r
+ gatts_ntf_ind_t data_info;\r
+ data_info.attr_handle = data2ae7Cmd;\r
+ data_info.value = data;\r
+ data_info.value_len = data_len;\r
+ errcode_t ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+ if(ret!=ERRCODE_SUCC)\r
+ {\r
+ msleep(50);\r
ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
if(ret!=ERRCODE_SUCC)\r
{\r
+ msleep(100);\r
+ ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+\r
+ if(ret!=ERRCODE_SUCC)\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
g_ble_conn_id, g_ble_server_handle,data_len);\r
- ble_set_ai_Answer_str("BLE NOTIF ERROR",5);\r
- }\r
- }\r
- }\r
+ }\r
}\r
return ret; \r
}\r
return ret; \r
}\r
\r
+errcode_t svr_ble_read_data_value_updata_noyify_test(uint8_t test)//2ae2\r
+{\r
+ gatts_ntf_ind_t data_info;\r
+ data_info.attr_handle = data2ae2Cmd;\r
+ static uint8_t battery_point_val[20] = {0};\r
+\r
+ battery_point_val[0] =test;//power ;//power;//电量90\r
+\r
+ uint16_t dial = ble_get_dial_id();\r
+ memcpy_s(&battery_point_val[1],2,&dial,2);\r
+\r
+ uint8_t _major,_mid,_minor;\r
+ uapi_get_fw_version(&_major,&_mid,&_minor);\r
+\r
+ battery_point_val[3] = _major;//固件版本号\r
+ battery_point_val[4] = _mid;\r
+ battery_point_val[5] = _minor;\r
+\r
+ bd_addr_t addr_info;\r
+ errcode_t ret = gap_ble_get_local_addr(&addr_info);\r
+ battery_point_val[6] = addr_info.addr[5];\r
+ battery_point_val[7] = addr_info.addr[4];\r
+ battery_point_val[8] = addr_info.addr[3];\r
+ battery_point_val[9] = addr_info.addr[2];\r
+ battery_point_val[10] = addr_info.addr[1];\r
+ battery_point_val[11] = addr_info.addr[0];\r
+\r
+ battery_point_val[12] = 0;//消息推送开关 默认是关闭 0\r
+ battery_point_val[13] = 0;//多媒体开关\r
+ battery_point_val[14] = 5;//客户编号\r
+ battery_point_val[15] = 5;//产品编号\r
+\r
+ battery_point_val[16] = 0;//硬件版本号\r
+ battery_point_val[17] = 1;\r
+\r
+ battery_point_val[18] = 0;//ble版本号\r
+ battery_point_val[19] = 1;\r
+\r
+\r
+ data_info.value = battery_point_val;\r
+ data_info.value_len = 20;\r
+ ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+ g_ble_conn_id, g_ble_server_handle,20);\r
+ \r
+ return ret; \r
+}\r
+\r
static uint8_t flag=1;\r
static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para,\r
errcode_t status)\r