From 78e84fcf264afd731cd66c807d9fcb690fe12126 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期一, 16 十二月 2024 10:08:16 +0800 Subject: [PATCH] 兼容真趣的基站 --- 01_SDK/nimble/samples/bluetooth/ble_central/src/misc.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 8 deletions(-) diff --git a/01_SDK/nimble/samples/bluetooth/ble_central/src/misc.c b/01_SDK/nimble/samples/bluetooth/ble_central/src/misc.c index f8f1b9c..91a9d47 100644 --- a/01_SDK/nimble/samples/bluetooth/ble_central/src/misc.c +++ b/01_SDK/nimble/samples/bluetooth/ble_central/src/misc.c @@ -110,7 +110,8 @@ uint16_t u16id[anchor_max_num]; /*u16ID*/ }blequeue; static char ble_anchor_name[20]="BeeLinker"; -uint16_t u16ble_id_fen[2]; +uint16_t u16ble_id_fen[30]; +uint8_t u16ble_id_fen1[50]; 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]; @@ -120,7 +121,8 @@ uint16_t rssi=0; uint8_t repeat_flag=0; uint8_t ble_id_fen[2]; - if (fields->name != NULL) { + 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)) @@ -159,6 +161,8 @@ blequeue.rssi[blequeue.totalnum]=rssi;//把rssi信息写入队列 blequeue.totalnum++; } + } + } // if (fields->uuids16 != NULL) { // printf(" uuids16(%scomplete)=", // fields->uuids16_is_complete ? "" : "in"); @@ -200,10 +204,49 @@ // printf("\n"); // } - if (fields->svc_data_uuid16 != NULL) { - printf(" svc_data_uuid16="); - print_bytes(fields->svc_data_uuid16, fields->svc_data_uuid16_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) { @@ -247,7 +290,7 @@ // print_bytes(fields->mfg_data, fields->mfg_data_len); // printf("\n"); // } - } +// } - } +// } } -- Gitblit v1.9.3