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 );