请问ble怎样设置才能只扫描自己的广播
广播数据除了部分固定的格式,数组最后可以自己定义一个名字,不过广播包总长貌似不能超过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 );
}
}