wahahahehehe

Tips:

1. 博客内容主要为博主的学习笔记,引用已表明出处,如有侵犯请联系我删除;

2. 如有错误请指出,万分感谢;

3. 博主邮箱:yukai_tao@163.com。

广播常用设置

广播常用设置

1、 设置广播通道 37、38、39

默认三个广播通道全部打开

// GAP_ADVCHAN_DEFINES GAP Advertisement Channel Map
#define GAP_ADVCHAN_37  0x01  //!< Advertisement Channel 37
#define GAP_ADVCHAN_38  0x02  //!< Advertisement Channel 38
#define GAP_ADVCHAN_39  0x04  //!< Advertisement Channel 39
#define GAP_ADVCHAN_ALL (GAP_ADVCHAN_37 | GAP_ADVCHAN_38 | GAP_ADVCHAN_39) //!< All Advertisement Channels Enabled

//添加至Broadcaster_Init() 广播初始化函数中
uint8_t init_adv_channel_map = GAP_ADVCHAN_37;
GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8_t ), &init_adv_channel_map );

2、设置广播间隔

// What is the advertising interval when device is discoverable (units of 625us, 160=100ms)
#define DEFAULT_ADVERTISING_INTERVAL          160

EVT中的广播模式的例程,都是不可连接的广播包,最低广播间隔为100ms

3、开启/关闭广播

//添加至Broadcaster_Init() 广播初始化函数中

/* 开启广播 */
uint8_t initial_advertising_enable = TRUE;
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &initial_advertising_enable );

/* 关闭广播 */
uint8_t initial_advertising_enable = FALSE;
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &initial_advertising_enable );

4、设置有限可发现模式 (GAP_ADTYPE_FLAGS_LIMITED)

//设置GAP_ADTYPE_FLAGS 为有限可发现模式
0x02,   // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_LIMITED | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,   //默认180s后关闭广播

/* 修改广播时长(广播x秒后停止) */
uint16_t adv_timeout  = 5; //单位为秒  
GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, adv_timeout );

  • 如需限制广播在 5s 之后停止,然后 60s 之后自动重新广播,如此反复,可添加一个定时事件,每 (60+5)s 开启一次广播。

5、普通发现模式 (GAP_ADTYPE_FLAGS_GENERAL)

//设置GAP_ADTYPE_FLAGS 为普通可发现模式
0x02,   // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_GENERAL | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,  //默认一直广播

/* 修改广播时长(广播x秒后停止) */
uint16_t adv_timeout  = 8000; //单位为0.625ms   5s
GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, adv_timeout );

6、动态更新广播数据

extern bStatus_t GAP_UpdateAdvertisingData( uint8_t taskID,uint8_t adType,uint8_t dataLen,uint8_t *pAdvertData );
  • taskID: 请求更改广播任务的ID
  • adType:TRUE更改广播数据,FALSE更改扫描回复数据
  • datalen:数据长度
  • *pAdvertData:数据指针

7、修改广播MAC地址

Pproperties -> C/C++ General -> Paths and Symbols -> Symbols -> GNU C

添加宏定义

BLE_MAC == TRUE

image

通常在xx_main.c文件中,定义了MacAddr[6]数组,用于自定义MAC地址。

#if (defined (BLE_MAC)) && (BLE_MAC == TRUE)
u8C MacAddr[6] =
{ 0x84,0xC2,0xE4,0x03,0x02,0x02};
#endif

posted on 2021-11-18 20:19  Wahahahehehe  阅读(574)  评论(0编辑  收藏  举报

导航