BLE在从机模式下,可以向外发送广播。
首先先了解一下,BLE广播相关信息。
广播相关的参数大致有以下几种:
1.Advertising interval (广播间隔)
2.Advertising_Type (广播类型)
3.Own_Address_Type(自身地址类型)
4.Direct_Address_Type(定向地址类型)
5.Direct_Address(定向地址)
6.Advertising_Channel_Map(广播信道)
7.Advertising_Filter_Policy(广播过滤策略)(白名单)
8.Advertising Data(广播数据)
9.ScanReponse Data(扫描回应数据)
广播一个包31个字节,第一个字节表示有几个有效数据。第二个字节表示数据类型AD Type之后才是数据。
广播间隔,是两次广播事件之间的最小时间间隔,一般值范围在 20ms~10.24s 之间。
// GAP - SCAN RSP data (max size = 31 bytes)
static uint8 scanRspData[] =
{
// complete name
0x11, // length of this data
GAP_ADTYPE_LOCAL_NAME_COMPLETE,
0x42, // 'B'
0x6c, // 'l'
0x65, // 'e'
0x42, // 'B'
0x6c, // 'l'
0x65, // 'e'
0x65, // 'e'
0x6C, // 'l'
0x6C, // 'l'
0x00,
// connection interval range
0x05, // length of this data
GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ), // 100ms
HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ), // 1s
HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),
// Tx power level
/* 0x02, // length of this data
GAP_ADTYPE_POWER_LEVEL,
0 // 0dBm
*/
};
// GAP - Advertisement data (max size = 31 bytes, though this is
// best kept short to conserve power while advertisting)
static uint8 advertData[] =
{
// Flags; this sets the device to use limited discoverable 最大广播31个字节
// 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,
0x09, //
GAP_ADTYPE_MANUFACTURER_SPECIFIC ,
0x00,//6 mac
0x00,
0x00,
0x00,
0x00,
0x00,
0x01,//从机
0xA5,//正常状态,5A--配对状态
0x03, // length of this data 数据长度
GAP_ADTYPE_16BIT_MORE, // some of the UUID's, but not all
LO_UINT16( SIMPLEPROFILE_SERV_UUID ),
HI_UINT16( SIMPLEPROFILE_SERV_UUID )
};
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );