CH582 CH573 CH579 BLE indication 属性
WCH提供CH582 CH573 CH579的SDK,SDK里面包含了各种协议支持,其中就包含BLE。BLE协议里,WCH提供了很多例程。其中simple peripheral例程是最为广泛使用的一个,里面提供了BLE最基本的各种read, write,notify属性的特征值,唯独没有indication属性的特征值。Indication 属性和notify属性类似,但又不一样,它是需要BLE Client设备收到数据后回复确认的一种机制。
在ATT层协议框架内,拥有一组属性的设备称为服务端(Server),读写该属性值的设备称为客户端(Client),Server和Client通过ATT PDU进行交互。属性协议共有6种:
主机RX 从机TX 方向:
通知(Notify):从机端上传数据给主机,不需要主机回复一个响应
指示(Indicate):从机端上传数据给主机,需要主机端发一个确认给服务器
通知和指示之间不同之处在于指示有应用层上的确认,而通知没有。
从机设备流程
1. 开启广播
2. 被主机成功连接,并交互连接参数
3. 等待主机获取服务
4. 等待主机成功使能notify功能
5. 从机给主机发送相应的notify数据包
1 BLE 特征值的indication属性
BLE特征值的indication是由server端主动向client端发送数据的一种方式,和notification方式类似,但indication不一样的地方是需要client端收到数据后回复confirm包给server端。这些行为都是在GATT层完成,并可以通知client应用层对方成功接收数据。由于有自动确认机制,indication在很多应用层级的协议制定中有比较广泛应用。
2 CH582 indication的实现
本文基于CH582的SDK V1.60版本的simple peripheral 例程实现indication,在simple GATT service中的特征值4上修改Notify属性为indication
具体实现参考这个博客,附带源码链接
CH582芯片句柄指示\确认(Handle Value Indication\Confirmation) - SweetTea_lllpc - 博客园 (cnblogs.com)