From: dxy <1731678236@qq.com> Date: Fri, 12 Apr 2024 03:44:59 +0000 (+0800) Subject: 先屏蔽绑定和解绑界面 X-Git-Tag: release_V1.2.70_20241020_135402~1200^2~2 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=396fae3200b36667eaa8c401d11ec27a7e081859;p=mirrors%2FFD230.git 先屏蔽绑定和解绑界面 --- 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 9e84c0ffc..74db90b9b 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -535,7 +535,11 @@ void getPhoneNameLen(uint8_t *crcnum,uint8_t *datalen)//获取手机设备名称 } memcpy(datalen,&len,1); cJSON_Delete(root); - } + } else{ + len = 0; + + memcpy(datalen,&len,1); + } } static char *getPhoneName(uint8_t *crcnum)//获取手机设备名称 @@ -554,14 +558,19 @@ 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); } cJSON_Delete(root); } - return str; + if (str == NULL){ + return NULL; + } + else{ + return str; + } + } void getPhoneMac(uint8_t *crcnum,uint8_t *phoneMac)//获取手机设备mac这个是手表上传给手机的mac地址 { @@ -588,15 +597,13 @@ 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,0,6); - }else - { - memcpy(phoneMac,phone_tmp,6); - - } + + memcpy(phoneMac,phone_tmp,6); cJSON_Delete(root); } + else{ + memcpy(phoneMac,phone_tmp,6); + } } void GetwatchSaveMac(uint8_t *mac,uint8_t *mactype)//获取手表本地保存的mac地址和mac地址类型 分共有和私有的 @@ -650,6 +657,12 @@ void GetwatchSaveMac(uint8_t *mac,uint8_t *mactype)//获取手表本地保存的 memcpy(mac,mac_tmp,6); } cJSON_Delete(root); + }else + { + memset(mac_tmp,0,6); + memcpy(mac,mac_tmp,6); + uint8_t type = 0; + memcpy(&mactype,&type,1); } } static void GetwatchSaveNameLen(uint8_t *datalen)//获取手表本地保存的手机设备名称长度 @@ -682,6 +695,9 @@ static void GetwatchSaveNameLen(uint8_t *datalen)//获取手表本地保存的 memcpy(datalen,&len,1); // 释放资源 cJSON_Delete(root); + }else{ + len = 0; + memcpy(datalen,&len,1); } } static char *GetwatchSaveName(void)//获取手表本地保存的手机设备名称 @@ -713,10 +729,6 @@ 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); } } @@ -724,14 +736,37 @@ static char *GetwatchSaveName(void)//获取手表本地保存的手机设备名 // 释放资源 cJSON_Delete(root); } - return str; + if (str == NULL) + { + return NULL; + }else{ + return str; + } + } void cleanUnbindInfor(void)//和旧手机解绑清除配对信息 { + uint8_t value[19]; + memset(value,0,19); + uint32_t tmp = 1; + uint16_t tmp_fen= 1; + value[0] =0x72; + value[1] =0x05; + value[2] =0x11; + memcpy(value+3,&tmp,4); + memcpy(value+7,&tmp,4); + memcpy(value+11,&tmp,4); + memcpy(value+15,&tmp_fen,2); + value[17] = 0x03;// + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + uint8_t MacType = 0; uint8_t mac_data[6]; memset(mac_data,0,6); GetwatchSaveMac(&mac_data,&MacType); + errcode_t ret1 = gap_disconnect_remote_device(&disconect_addr); + // printf("inforaddr:%x",ret1); gap_ble_disconnect_remote_device(&disconect_addr);//与固定的mac设置地址进行断开连接 bd_addr_t inforaddr; inforaddr.addr[0] = mac_data[0]; @@ -742,22 +777,25 @@ void cleanUnbindInfor(void)//和旧手机解绑清除配对信息 inforaddr.addr[5] = mac_data[5]; inforaddr.type = MacType; // printf("inforaddr:%x-%x-%x-%x-%x-%x",inforaddr.addr[0],inforaddr.addr[1],inforaddr.addr[2],inforaddr.addr[3],inforaddr.addr[4],inforaddr.addr[5]); - errcode_t ret= gap_ble_remove_pair(&inforaddr);//清除配对信息 - if(ret!=ERRCODE_SUCC) - { - printf("gap_ble_remove_pair : %X\r\n",ret); - } + errcode_t ret= gap_ble_remove_pair(&disconect_addr);//清除配对信息 + gap_remove_pair(&disconect_addr); + // if(ret!=ERRCODE_SUCC) + // { + // printf("gap_ble_remove_pair : %X\r\n",ret); + // } //清除保存的文件信息 if(0!=remove(PHONE_WATCH_CONFIG_PATH)) { printf("json remove fail\r\n"); } + uapi_reboot_device(); + } void sendBindInfor(uint8_t *crcnum) { - uint8_t value[20]; - memset(value,0,20); + uint8_t value[19]; + memset(value,0,19); uint32_t tmp = 1; uint16_t tmp_fen= 1; value[0] =0x72; @@ -767,11 +805,11 @@ void sendBindInfor(uint8_t *crcnum) memcpy(value+7,&tmp,4); memcpy(value+11,&tmp,4); memcpy(value+15,&tmp_fen,2); - + uint8_t copare_mac[6]; memset(copare_mac,0,6); uint8_t datalen=0; - char *devname; + char *devname = NULL; uint8_t devnamelen = 0; uint8_t mac_tmp[6]; memset(mac_tmp,0,6); @@ -779,19 +817,24 @@ void sendBindInfor(uint8_t *crcnum) uint8_t bond = 1;//未与任何手机绑定过 errcode_t ret = 0; first_bond = 0; - - uint8_t save_mac[6]; memset(save_mac,0,6); - char *showname; + char *showname = NULL; uint8_t showname_len = 0; uint8_t MacType = 0; GetwatchSaveMac(&save_mac,&MacType);//获取手表设备本地保存的mac地址和mac地址类型 getPhoneMac(crcnum,&copare_mac); - + // save_mac[0] = 90; + // memset(copare_mac,0,6); 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地址就走连接流程重新绑定 { + bond = 0x01;//手表未和任何手机绑定过 + value[17] = bond;// + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + comfirmPaire(1); + return; #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION devnamelen = 0; getPhoneNameLen(crcnum,&devnamelen);//获取手机下发的手机设备名称长度 @@ -799,17 +842,21 @@ void sendBindInfor(uint8_t *crcnum) { devname = getPhoneName(crcnum); printf("devname!!!!!!!!!:%s devnamelen:%d",devname,devnamelen); - CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); - printf("bond flag:!!!!!!!!!\r\n"); + if (devname != NULL){ + printf("phone devname is name!!!!!!!!!:"); + CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); + }else{ + printf("phone devname is no name11111!!!!!!!!!:"); + CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); + } }else{ + printf("phone devname is no name!!!!!!!!!:"); CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0); } #endif - bond = 0x01;//手表未和任何手机绑定过 + }else { - // printf("success parsing JSON :save_mac :%x %x %x %x %x %x copare_mac %x %x %x %x %x %x;\n",save_mac[0],save_mac[1],save_mac[2],save_mac[3],save_mac[4],save_mac[5], - // copare_mac[0],copare_mac[1],copare_mac[2],copare_mac[3],copare_mac[4],copare_mac[5]); if(copare_mac[0] == 0 && copare_mac[1] == 0 && copare_mac[2] == 0 && copare_mac[3] == 0 && copare_mac[4] == 0 && copare_mac[5] == 0) { bond = 0x03;//手表和其他手机绑定过 @@ -823,6 +870,10 @@ void sendBindInfor(uint8_t *crcnum) ret = gap_ble_pair_remote_device(&phone_addr); printf("ret:%d",ret); bond = 0x02;//手表与该手机绑定过 + value[17] = bond;// + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + return; }else{ bond = 0x03;//手表与其他手机绑定过 } @@ -834,15 +885,31 @@ void sendBindInfor(uint8_t *crcnum) sendBleData(value,19); if(bond == 0x03) { + cleanUnbindInfor(); + return; + errcode_t ret1 = gap_disconnect_remote_device(&disconect_addr); + gap_ble_disconnect_remote_device(&disconect_addr);//与固定的mac设置地址进行断开连接 devnamelen = 0; GetwatchSaveNameLen(&devnamelen);//获取手表设备保存手机的设备名称长度 if(devnamelen > 0) { devname = GetwatchSaveName(); printf("devname:%s showname_len:%d",devname,devnamelen); - CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,(uint8_t *)devname,devnamelen); + // cleanUnbindInfor(); + if (devname != NULL){ + printf("devname:is no null!!!!!"); + CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,(uint8_t *)devname,devnamelen); + }else{ + printf("devname:is null!!!!!"); + CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,NULL,0); + } + printf("cleanUnbindInfor!!!!!!!"); }else{ + cleanUnbindInfor(); + return; + printf("devname:is no name!!!!!"); + // cleanUnbindInfor(); CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,NULL,0); } //加解绑提示界面是否和旧的手机解绑app 弹窗提示 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 0088bc317..2db8c9a5f 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -93,7 +93,7 @@ uint8_t phone_mac_data[6]={0}; bd_addr_t phone_addr;//发起配对地址反序 bd_addr_t disconect_addr;//断开连接地址不需要反序 uint8_t Bleconnect = 0;//蓝牙默认是断开 0 1 为连接 - +uint8_t devpair_state = 0;//设备配对状态 0 未配对 1已配对成功 uint8_t bond_flag = 0;//绑定标识 uint16_t ble_nus_max_data_len = SDK_BLE_MTU_MIN - 3; #define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500 @@ -148,7 +148,7 @@ 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 1 +#if 0 unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x26}; bluetooth_set_local_addr(set_mac,6); bd_addr_t addr_info; @@ -159,7 +159,7 @@ static void svr_ble_adv_data_set(int adv_id) bluetooth_get_local_addr(&addr[0],len); char watchName[32]; memset_s(watchName, sizeof(watchName), 0, sizeof(watchName)); - (void)sprintf_s(watchName, sizeof(watchName), "%s %x%x",BLE_DEFAULT_NAME,addr[1],addr[0]); + (void)sprintf_s(watchName, sizeof(watchName), "%s %02x%02x",BLE_DEFAULT_NAME,addr[1],addr[0]); // (void)sprintf_s(watchName, sizeof(watchName), "%s",BLE_DEFAULT_NAME); ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1); @@ -275,6 +275,7 @@ void svr_ble_adv_start_param(void) static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state, gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason) { + uint16_t number; errcode_t ret = gap_ble_get_paired_devices_num(&number); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "number :%d addr!!! 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x addr->type:%d\r\n",number,addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3], @@ -287,6 +288,7 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, svr_ble_adv_start(); // } } else { + devpair_state = 0;// svr_ble_adv_stop(); set_phone_info(addr); Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接 @@ -297,6 +299,7 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, static void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status) { + devpair_state = 1;//代表配对成功了 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_pair_result_cbt_cb!!! addr 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x status:0x%x\r\n",addr->addr[0],addr->addr[1], addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5],status); } @@ -1237,8 +1240,8 @@ void svr_ble_reset_init(void)//重新启ble服务 void svr_bluetooth_init(void) { - // bool ret = enable_bt_stack(); - bool ret = enable_ble(); + bool ret = enable_bt_stack(); + // bool ret = enable_ble(); if (ret != ERRCODE_SUCC) { // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret); } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h index 4bbc7d0c4..742b767ea 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h @@ -16,6 +16,7 @@ extern bd_addr_t disconect_addr;//断开连接地址不需要反序 extern uint8_t bond_flag; extern uint8_t phone_mac_data[6]; extern uint8_t Bleconnect;//蓝牙默认是断开 0 1 为连接 +extern uint8_t devpair_state; extern uint8_t data2ae3Cmd;//2ae3短指令特征值 extern uint8_t data2ae4Cmd;//长指令特征值 大于20个字节的数据app下发的 extern uint16_t ble_nus_max_data_len;