TI中文支持网
TI专业的中文技术问题搜集分享网站

请问ble怎样设置才能只扫描自己的广播

怎么在广播中加入一段特定的数据标识这是自己的广播

Light J:

广播数据除了部分固定的格式,数组最后可以自己定义一个名字,不过广播包总长貌似不能超过31字节。如:

static uint8 advertData[] ={ // Flags; this sets the device to use limited discoverable // mode (advertises for 30 seconds at a time) instead of general // discoverable mode (advertises indefinitely) 0x02, // length of this data GAP_ADTYPE_FLAGS, DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,

// service UUID, to notify central devices what services are included // in this peripheral 0x03, // length of this data GAP_ADTYPE_16BIT_MORE, // some of the UUID's, but not all LO_UINT16( SIMPLEPROFILE_SERV_UUID ),      //你要只发现自己的广播,可以把这里的UUID改成其他约定好的值,然后在主机中开启过滤广播,这里借用服                                                                                             //务的UUID:SIMPLEPROFILE_SERV_UUID,其实没有必然关系。

HI_UINT16( SIMPLEPROFILE_SERV_UUID ), 0x06, // length of this data GAP_ADTYPE_LOCAL_NAME_COMPLETE,            //下面的名字也是自己定义的 'L', 'i', 'g', 'h', 't'};

主机中开启过滤:

if ( DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE ) { if ( simpleBLEFindSvcUuid( 0xAA55,                //这里设置为0xAA55,就只添加UUID为0xAA55的广播,上面的广播就被过滤掉了,其实这部分都是开源的,完全可以                                                                                  //自己重写过滤规则,指定过滤广播中的某些字节。 pEvent->deviceInfo.pEvtData, pEvent->deviceInfo.dataLen ) ) { simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType ); } }

赞(0)
未经允许不得转载:TI中文支持网 » 请问ble怎样设置才能只扫描自己的广播
分享到: 更多 (0)