GAP:通用访问配置协议层
- gap的角色
- 发现的模式与过程
- 连接模式与过程
- 安全模式与过程
CC2640R2F的GAP层抽象
GAP的角色
- Broadcaster 广播电台 -不可连接的广播者。
- Observer 观察者 -扫描广播者但无法启动连接。
- Peripheral 外设 - 可连接的广播者,并在单个链路层连接中作为从属设备。
- Central 主机 - 设备扫描广播者并启动连接,并在单个或多个链路层连接中作为主服务器运行。蓝牙低功耗协议栈支持多达三个并发连接。
// 设置GAP GATT服务中的设备名称特征
GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName);
// Configure GAP
{
//使能连接参数更新
uint16_t paramUpdateDecision = DEFAULT_PARAM_UPDATE_REQ_DECISION;
// Pass all parameter update requests to the app for it to decide
GAP_SetParamValue(GAP_PARAM_LINK_UPDATE_DECISION, paramUpdateDecision);
}
// 初始化GAP设备,做为Peripheral,地址采用Public方式
GAP_DeviceInit(GAP_PROFILE_PERIPHERAL, selfEntity, addrMode, NULL);
连接过程
连接过程
广播报文:由广播者发送至扫描者
扫描请求报文:由扫描者发送至广播者
扫描响应报文:由广播者发送至扫描者
连接报文:由发起者发送至广播者
连接参数
Connection Interval 连接间隔:在BLE跳频数据传输时,在一个特定的时间之后,会跳到一个新的通道上,LL层负责接入地址的维护。这个发现设备并收到数据的事件,就被称为连接事件,连接事件间的间隔为连接间隔。
以 1.25 ms 为单位,从最小值 6(7.5 ms)到最大值 3200(4.0 s)。
Slave Latency 从机延迟:从机跳过多个连接事件的能力
Supervision Time-out 监控超时:两次成功连接事件之间的最长时间
当多连接时,最小的连接间隔是12.5 + 5*N(N为当前连接的数目)
连接参数的更新
主从机连接时,首先使用的是主机端默认的连接参数。
1)如果从机端禁止参数更新,则之后的通信都将使用主机端默认的连接参数。
2)如果从机端允许参数更新,则在主从机连接的DEFAULT_CONN_PAUSE_PERIPHERAL秒后,向主机端发送连接参数更新请求。
①如果从机的连接参数符合主机端的连接标准,则更新参数;
②如果从机的连接参数不符合主机端的连接标准,则不更新参数。如果此时使用的主机参数,不在从机申请的参数范围内,则会造成连接断开。
Master可以直接发起连接参数更新,Slaver要发起连接参数更新,要先在L2CAP层向主机发起协商,主机同意后,再由主机走LL层和GAP的来发起参数更新。