WXK
2024-12-16 78e84fcf264afd731cd66c807d9fcb690fe12126
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");
//    }
        }
//        }
        
    }
//    }
}