| | |
| | | desc->sec_state.authenticated, |
| | | desc->sec_state.bonded); |
| | | } |
| | | |
| | | struct queue //结构体类型 |
| | | { |
| | | uint8_t totalnum;//基站总数 |
| | |
| | | uint8_t uwb_tongxun_flag[anchor_max_num];//与uwb通讯成功失败的标志位 |
| | | uint16_t u16id[anchor_max_num]; /*u16ID*/ |
| | | }blequeue; |
| | | static char ble_anchor_name[20]="BeeLinker"; |
| | | static char ble_anchor_name[20]="HFGD_XB"; |
| | | uint16_t u16ble_id_fen[30]; |
| | | uint8_t u16ble_id_fen1[50]; |
| | | uint16_t rssidata; |
| | | uint8_t a; |
| | | void print_adv_fields(const struct ble_hs_adv_fields *fields,const struct ble_gap_disc_desc *disc) |
| | | { |
| | | char s[BLE_HS_ADV_MAX_SZ]; |
| | | char mac[100]; |
| | | const uint8_t *u8p; |
| | | int i; |
| | | uint16_t ble_id=0; |
| | | uint16_t rssi=0; |
| | | uint8_t repeat_flag=0; |
| | | uint8_t ble_id_fen[2]; |
| | | |
| | | if (fields->name != NULL) |
| | | { |
| | | assert(fields->name_len < sizeof s - 1); |
| | | memcpy(s, fields->name, fields->name_len); |
| | | |
| | | if(!memcmp(s,ble_anchor_name,fields->name_len)) |
| | | { |
| | | s[fields->name_len] = '\0'; |
| | | printf(" name(complete)=%s\n", |
| | | // memcpy(mac, fields->public_tgt_addr, fields->num_public_tgt_addrs); |
| | | // s[fields->name_len] = '\0'; |
| | | // printf(" name(complete)=%s\n", |
| | | // s); |
| | | /*测试模式 |
| | | rssidata=rssidata+abs(disc->rssi); |
| | | a++; |
| | | if(a==10) |
| | | { |
| | | printf(" name(complete)=%s\n", |
| | | s); |
| | | printf("RSSI:%d\r\n",disc->rssi); |
| | | ble_id_fen[0]=fields->svc_data_uuid16[1]; |
| | | ble_id_fen[1]=fields->svc_data_uuid16[0]; |
| | | u16ble_id_fen[0]=fields->svc_data_uuid16[1]; |
| | | u16ble_id_fen[1]=fields->svc_data_uuid16[0]; |
| | | printf("RSSI:%d\r\n",rssidata/10); |
| | | a=0; |
| | | rssidata=0; |
| | | } |
| | | */ |
| | | // printf("\n"); |
| | | // uart_data_send(&UART0_OBJ, mac,fields->num_public_tgt_addrs); |
| | | // printf("\n"); |
| | | // memset(mac,0,100); |
| | | // ble_id_fen[0]=fields->svc_data_uuid16[1]; |
| | | // ble_id_fen[1]=fields->svc_data_uuid16[0]; |
| | | // u16ble_id_fen[0]=fields->svc_data_uuid16[1]; |
| | | // u16ble_id_fen[1]=fields->svc_data_uuid16[0]; |
| | | |
| | | memcpy(&ble_id,ble_id_fen,2);//从扫描的数据中拿出id |
| | | memcpy(&ble_id,&disc->addr.val[0],2);//从扫描的数据中拿出id |
| | | rssi=abs(disc->rssi); |
| | | for(i=0;i<anchor_max_num;i++) //校验结构体中是否已经有id信息 |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | // if (fields->uuids16 != NULL) { |
| | | // printf(" uuids16(%scomplete)=", |
| | | // fields->uuids16_is_complete ? "" : "in"); |
| | | // for (i = 0; i < fields->num_uuids16; i++) { |
| | | // print_uuid(&fields->uuids16[i].u); |
| | | // printf(" "); |
| | | // } |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->uuids32 != NULL) { |
| | | // printf(" uuids32(%scomplete)=", |
| | | // fields->uuids32_is_complete ? "" : "in"); |
| | | // for (i = 0; i < fields->num_uuids32; i++) { |
| | | // print_uuid(&fields->uuids32[i].u); |
| | | // printf(" "); |
| | | // } |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->uuids128 != NULL) { |
| | | // printf(" uuids128(%scomplete)=", |
| | | // fields->uuids128_is_complete ? "" : "in"); |
| | | // for (i = 0; i < fields->num_uuids128; i++) { |
| | | // print_uuid(&fields->uuids128[i].u); |
| | | // printf(" "); |
| | | // } |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | |
| | | // if (fields->tx_pwr_lvl_is_present) { |
| | | // printf(" tx_pwr_lvl=%d\n", fields->tx_pwr_lvl); |
| | | // } |
| | | |
| | | // if (fields->slave_itvl_range != NULL) { |
| | | // printf(" slave_itvl_range="); |
| | | // print_bytes(fields->slave_itvl_range, BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN); |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | if (fields->mfg_data != NULL) { |
| | | if(fields->mfg_data_len==26-1&&fields->mfg_data[20]==0x4e&&fields->mfg_data[21]==0x64) |
| | | { |
| | | // s[fields->name_len] = '\0'; |
| | | // printf(" name(complete)=%s\n", |
| | | // s); |
| | | // printf("RSSI:%d\r\n",disc->rssi); |
| | | ble_id_fen[0]=fields->mfg_data[23]; |
| | | ble_id_fen[1]=fields->mfg_data[22]; |
| | | u16ble_id_fen[0]=fields->mfg_data[23]; |
| | | u16ble_id_fen[1]=fields->mfg_data[22]; |
| | | |
| | | memcpy(u16ble_id_fen1, fields->mfg_data, fields->mfg_data_len); |
| | | |
| | | memcpy(&ble_id,ble_id_fen,2);//从扫描的数据中拿出id |
| | | rssi=abs(disc->rssi); |
| | | for(i=0;i<anchor_max_num;i++) //校验结构体中是否已经有id信息 |
| | | { |
| | | if(ble_id==blequeue.id[i]) |
| | | { |
| | | repeat_flag=1;//已经有id信息 |
| | | break; |
| | | } |
| | | } |
| | | if(repeat_flag==1) |
| | | { |
| | | blequeue.id[i]=ble_id; |
| | | blequeue.rssi[i]=rssi; |
| | | blequeue.u16id[2*i]=u16ble_id_fen[0]; |
| | | blequeue.u16id[2*i+1]=u16ble_id_fen[1]; |
| | | } |
| | | if(repeat_flag==0) |
| | | { |
| | | blequeue.id[blequeue.totalnum]=ble_id;//把id信息写入队列 |
| | | blequeue.u16id[2*blequeue.totalnum]=u16ble_id_fen[0]; |
| | | blequeue.u16id[2*blequeue.totalnum+1]=u16ble_id_fen[1]; |
| | | blequeue.rssi[blequeue.totalnum]=rssi;//把rssi信息写入队列 |
| | | blequeue.totalnum++; |
| | | } |
| | | } |
| | | // printf(" svc_data_uuid16="); |
| | | // print_bytes(fields->svc_data_uuid16, fields->svc_data_uuid16_len); |
| | | // printf("\n"); |
| | | } |
| | | |
| | | // if (fields->public_tgt_addr != NULL) { |
| | | // printf(" public_tgt_addr="); |
| | | // u8p = fields->public_tgt_addr; |
| | | // for (i = 0; i < fields->num_public_tgt_addrs; i++) { |
| | | // printf("public_tgt_addr=%s ", addr_str(u8p)); |
| | | // u8p += BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN; |
| | | // } |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->appearance_is_present) { |
| | | // printf(" appearance=0x%04x\n", fields->appearance); |
| | | // } |
| | | |
| | | // if (fields->adv_itvl_is_present) { |
| | | // printf(" adv_itvl=0x%04x\n", fields->adv_itvl); |
| | | // } |
| | | |
| | | // if (fields->svc_data_uuid32 != NULL) { |
| | | // printf(" svc_data_uuid32="); |
| | | // print_bytes(fields->svc_data_uuid32, fields->svc_data_uuid32_len); |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->svc_data_uuid128 != NULL) { |
| | | // printf(" svc_data_uuid128="); |
| | | // print_bytes(fields->svc_data_uuid128, fields->svc_data_uuid128_len); |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->uri != NULL) { |
| | | // printf(" uri="); |
| | | // print_bytes(fields->uri, fields->uri_len); |
| | | // printf("\n"); |
| | | // } |
| | | |
| | | // if (fields->mfg_data != NULL) { |
| | | // printf(" mfg_data="); |
| | | // print_bytes(fields->mfg_data, fields->mfg_data_len); |
| | | // printf("\n"); |
| | | // } |
| | | // } |
| | | |
| | | // } |
| | | } |