写在前面:本文将针对 广播部分做一个不太完备总结,个人QQ:993650814,有问题欢迎骚扰并及时补充。
步入正文:
1、蓝牙Name 的设置:
广播名字的模式分为三种:full name、short name 、no name
full name和no name 没啥可说的,short name设置的时候这里需要注意一点,如果广播的name为short的话还需将name的长度一并指出:
2、 appearance 设置
外观特性指示设备是普通手机,手环或者平板电脑之类的,通过调用协议栈函数 sd_ble_gap_appearance_get来设置,这个函数的参数在ble_types.h文件中
3、广播flag的设置:
flag用来指示BLE设备物理连接的功能,因为大多数BLE都是单模的,所以一般都不支持BR、EDR,所以这里设置的时候就两种有限可发现模式(BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE)和一般可发现模式(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE)。这两者的区别是,有限可发现模式有时间的限制,一般是30s;一般可发现模式没有时间的限制。
基于此,那么如何让设备一直处于广播状态呢?需要做两步设置:
(1)、广播flag 设置为一般可发现模式:
advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
( 2 )、 将持续广播时间设置为无穷大:
init.config.ble_adv_fast_timeout = APP_ADV_TIMEOUT_IN_SECONDS;
#define APP_ADV_TIMEOUT_IN_SECONDS 0 //这里设置成0,就是一直在广播
4、UUID的设置
这里不解释了。
5、广播模式的设置:
广播分如下类型:Direct模式、Fast 模式、Slow模式、Idle模式。
6、广播数据的设置:
7、扫描回应数据的设置
如果要广播的数据太长超过31个Bytes,可用配置扫描回应数据,具体如下:
暂时先更新到这里,如果后期想起来别的,会继续添加。