From: dxy <1731678236@qq.com> Date: Wed, 10 Apr 2024 12:39:20 +0000 (+0800) Subject: 绑定协议先屏蔽hid,能正常发起配对 X-Git-Tag: release_V1.2.70_20241020_135402~1200^2~4 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c21e9513f65ad0c63389a90f9ca98087db8ca822;p=mirrors%2FFD230.git 绑定协议先屏蔽hid,能正常发起配对 --- diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 9b76a232d..9e84c0ffc 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -327,9 +327,10 @@ static uint8_t jsonCheck_phoneinfor(uint8_t *buf,uint8_t *mac_data,char *devnam } printf("\n"); } - if(mac_tmp[0] != 0 && mac_tmp[1] != 0 && mac_tmp[2] != 0 && mac_tmp[3] != 0 && mac_tmp[4] != 0 && mac_tmp[5] != 0) + if(mac_tmp[0] == 0 && mac_tmp[1] == 0 && mac_tmp[2] == 0 && mac_tmp[3] == 0 && mac_tmp[4] == 0 && mac_tmp[5] == 0) { - printf("MAC地址: len %d",sizeof(mac_tmp)); + memcpy(mac_data,0,6); + }else{ memcpy(mac_data,mac_tmp,6); } cJSON_Delete(root); @@ -487,9 +488,13 @@ static void getRecvPhoneInfo(uint8_t *phonemac,uint8_t *name,uint8_t *len,uint8_ } printf("\n"); } - if(mac[0] !=0 && mac[1] != 0 && mac[2] != 0 && mac[3] != 0 && mac[4] != 0 && mac[5] != 0) + if(mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0) + { + memcpy(phonemac,0,6); + }else { memcpy(phonemac,mac,6); + } cJSON *pn = cJSON_GetObjectItem(root,"pn"); @@ -549,6 +554,7 @@ static char *getPhoneName(uint8_t *crcnum)//获取手机设备名称 savephonename = malloc(sizeof(char)*datalen); strcpy(str,pn->valuestring); strcpy(savephonename,pn->valuestring); + free(str); printf("str:%s savephonename:%s\n",str,savephonename); } printf("设备名称: %s\n", pn->valuestring); @@ -583,10 +589,11 @@ void getPhoneMac(uint8_t *crcnum,uint8_t *phoneMac)//获取手机设备mac这个 printf("\n"); } if(phone_tmp[0] == 0 && phone_tmp[1] == 0 && phone_tmp[2] == 0 && phone_tmp[3] == 0 && phone_tmp[4] == 0 && phone_tmp[5] == 0){ - memcpy(phoneMac,phone_tmp,6); + memcpy(phoneMac,0,6); }else { - memcpy(phoneMac,0,6); + memcpy(phoneMac,phone_tmp,6); + } cJSON_Delete(root); } @@ -706,6 +713,10 @@ static char *GetwatchSaveName(void)//获取手表本地保存的手机设备名 str = malloc(sizeof(char)*showname_len); pn->valuestring[showname_len-1]='\0'; strcpy(str,pn->valuestring); + if(str) + { + free(str); + } printf("GetwatchSaveName:%s",pn->valuestring); } } @@ -778,7 +789,7 @@ void sendBindInfor(uint8_t *crcnum) GetwatchSaveMac(&save_mac,&MacType);//获取手表设备本地保存的mac地址和mac地址类型 getPhoneMac(crcnum,&copare_mac); - + if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)//只要手表本地存储没有mac地址就走连接流程重新绑定 { #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION @@ -787,11 +798,9 @@ void sendBindInfor(uint8_t *crcnum) if(devnamelen > 0 ) { devname = getPhoneName(crcnum); - printf("devname:%s devnamelen:%d",devname,devnamelen); - CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,(uint8_t *)devname,devnamelen); - if(devname){ - free(devname); - } + printf("devname!!!!!!!!!:%s devnamelen:%d",devname,devnamelen); + CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); + printf("bond flag:!!!!!!!!!\r\n"); }else{ CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); } @@ -809,7 +818,10 @@ void sendBindInfor(uint8_t *crcnum) int result = memcmp(copare_mac,save_mac,6); if(result == 0) { + printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2], + phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type); ret = gap_ble_pair_remote_device(&phone_addr); + printf("ret:%d",ret); bond = 0x02;//手表与该手机绑定过 }else{ bond = 0x03;//手表与其他手机绑定过 @@ -829,9 +841,7 @@ void sendBindInfor(uint8_t *crcnum) devname = GetwatchSaveName(); printf("devname:%s showname_len:%d",devname,devnamelen); CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,(uint8_t *)devname,devnamelen); - if(devname){ - free(devname); - } + printf("cleanUnbindInfor!!!!!!!"); }else{ CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,NULL,0); } @@ -2504,7 +2514,23 @@ static void GetSpo2GetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t } - +void cameraSend(void) +{ + uint8_t value[19]; + memset(value,0,19); + uint32_t tmp = 1; + uint16_t tmp_data = 1; + value[0] = 0x72; + value[1] = 0x01; + value[2] = 0x23; + memcpy(value+3,&tmp,4); + memcpy(value+7,&tmp,4); + memcpy(value+11,&tmp,4); + memcpy(value+15,&tmp_data,2); + value[17] = 2;// + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); +} //手势拍照协议 static void carmeraCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) { diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h index 06b33918d..2fdcdcaba 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h @@ -584,6 +584,7 @@ errcode_t bondSucessCmd(void);//发送解绑指令,解绑界面调用这个函 void getDeviceState(void); void cleanUnbindInfor(void);//和旧手机解绑清除配对信息 void comfirmPaire(uint8_t flag);//发送确认配对指令 1确认配对 0取消配对 +void cameraSend(void); #ifdef __cplusplus } #endif diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index 15f191038..0088bc317 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -105,16 +105,9 @@ uint8_t data2ae5Cmd = 0; #if 1//def SUPPORT_BLE_SERVICE static void set_phone_info(bd_addr_t *addr)//保存手机信息 包含手机mac地址 { - bd_addr_t new_addr; - new_addr.type = addr->type; - new_addr.addr[0] = addr->addr[5]; - new_addr.addr[1] = addr->addr[4]; - new_addr.addr[2] = addr->addr[3]; - new_addr.addr[3] = addr->addr[2]; - new_addr.addr[4] = addr->addr[1]; - new_addr.addr[5] = addr->addr[0]; - printf("set_phone_info:addr.type %x-%x-%x-%x-%x-%x-%x:%d new_addr.type->%d",new_addr.addr[5],new_addr.addr[4],new_addr.addr[3],new_addr.addr[2],new_addr.addr[1],new_addr.addr[0],addr->type,new_addr.type); - memcpy(&phone_addr,&new_addr,sizeof(bd_addr_t)); + printf("set_phone_info:addr.type %x-%x-%x-%x-%x-%x: new_addr.type->%d\r\n",addr->addr[5],addr->addr[4], + addr->addr[3],addr->addr[2],addr->addr[1],addr->addr[0],addr->type); + memcpy(&phone_addr,addr,sizeof(bd_addr_t)); memcpy(&disconect_addr,addr,sizeof(bd_addr_t)); // printf("phone_addr:%x-%x-%x-%x-%x-%x",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]); } @@ -155,8 +148,8 @@ static void svr_ble_adv_data_set(int adv_id) gap_ble_config_adv_data_t adv_data_info; memset_s(&adv_data_info, sizeof(gap_ble_config_adv_data_t), 0, sizeof(gap_ble_config_adv_data_t)); -#if 0 - unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x20}; +#if 1 + unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x26}; bluetooth_set_local_addr(set_mac,6); bd_addr_t addr_info; int32_t ret= 0; @@ -290,11 +283,11 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! 0x%x ret:%d\r\n",pair_state,AdverFlag); - if(AdverFlag == true){ - svr_ble_adv_start(); - } + // if(AdverFlag == true){ + svr_ble_adv_start(); + // } } else { - + svr_ble_adv_stop(); set_phone_info(addr); Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state); @@ -1255,7 +1248,7 @@ void svr_bluetooth_init(void) svr_ble_bt_init_gatts(); #endif #ifdef SUPPORT_HID_SERVICE - ble_hid_server_init(); + // ble_hid_server_init(); #endif ble_factory_server_init(); svr_ble_adv_start_param();