我一直在开发一个应用程序来读取和写入另一个BLE设备的数据。从应用程序的角度来看,我没有任何问题。只是一些我需要澄清的概念性疑虑。所以:
1.为什么我们需要CCCD来启用通知?
首先setCharacteristicNotification() - 启用/禁用本地设备接收来自外围设备的通知
CCCD - 客户端配置特征描述符
“使用CCCD是为了让GATT客户端控制GATT服务器可以向它发送什么类型的数据包” - 这意味着启用外设发送数据。
2.一旦通过ENABLE_INDICATION_VALUE,它是否在外围设备中启用通知?
NO。对于每个指示,您必须发送确认声明这是我需要的数据。
3. ENABLE_INDICATION_VALUE和ENABLE_NOTIFICATION_VALUE有什么区别?
如果特征值有任何变化,他们都会通知他们。
ENABLE_NOTIFICATION_VALUE - >如果有任何更改,外围设备将发送,这意味着这可以用于常规通知
ENABLE_INDICATION_VALUE - >如果有任何更改,外设将发送,在下一个连接间隔中将有一个应用程序级别ack(来自ble stack)(一个连接间隔只允许一个指示),那么只有外围设备可以发送新值。这就是我们无法使用ENABLE_INDICATION_VALUE发送常规通知的原因。