蓝牙设备连接模式,首先要有一个扫描设备,来扫描处于可发现模式的蓝牙设备。
一个可被发现的设备可以处于有限可发现模式或一般可发现模式。有限可发现模式是用来暗示该设备应该对扫描设备有较高的优先权,在这种模式下使用的广播间隔往往比一般可发现模式下的广播间隔要快。
一个设备在有限发现模式下的时间因该是有限的,核心规范建议这个时间不超过一分钟。
一个设备如果标记设置为不可发现的,这意味着其他扫描设备应该忽略它。
在一般可发现模式下,蓝牙设备总是发出广播(只要它有电并且没有连接)。
一般模式通常用于没有用户界面的设置(没有按键可按)。
使用Bluetopia协议栈举例,接口如下:
此功能设置属于GAP(Generic Access Profile),所以使用GAP的API。
GAP的功能包含一下部分:
- 连接参数设置 (GAP Connection Parameters Changes)
- 设备认证匹配和丢失连接 (GAP Authentication and Lost Bond)
typedef enum
{
dmNonDiscoverableMode,
dmLimitedDiscoverableMode,
dmGeneralDiscoverableMode
} GAP_Discoverability_Mode_t;
int BTPSAPI GAP_Set_Discoverability_Mode(unsigned int BluetoothStackID, GAP_Discoverability_Mode_t GAP_Discoverability_Mode, unsigned long Max_Discoverable_Time);
// 永久可被发现
GAP_Set_Discoverability_Mode(stackID, dmGeneralDiscoverableMode, 0);
// 设置30s可被发现
GAP_Set_Discoverability_Mode(stackID,dmLimitedDiscoverableMode, 30);