客户端特征配置描述符中的ENABLE_INDICATION_VALUE和ENABLE_NOTIFICATION_VALUE是什么?

Ani*_*ena 3 android bluetooth-lowenergy android-bluetooth android-ble

我一直在开发一个应用程序,以便从另一个BLE设备读取和写入数据。从应用程序的角度来看,我没有任何问题。我只需要澄清一些概念上的疑问。所以:

  1. 为什么我们需要cccd来启用通知?

  2. 一旦通过ENABLE_INDICATION_VALUE,它是否在外围设备中启用通知?

  3. ENABLE_INDICATION_VALUE和ENABLE_NOTIFICATION_VALUE之间的主要区别是什么,而两者都执行相同的任务,即向中央设备发送连续数据?

Emi*_*mil 6

  1. 如果客户端应启用通知/指示,则需要配置服务器。否则它将不会发送任何东西。

  2. 否。16位描述符值是一个位字段。当前仅定义了两位:通知和指示。您可以设置两个位,然后如果服务器运行正常,则应该同时获得通知和指示。

  3. 服务器可以在需要时发送通知。每个连接事件甚至可能有多个通知,从而提高了性能。一台服务器只能有一个未完成的指示。客户端需要确认指示的接收,然后服务器才能发送新指示。与通知相比,这会降低性能。请注意,在我看来,将指示与Android或iOS作为客户端一起使用是没有用的,因为在应用程序完全处理指示之前,确认是由蓝牙堆栈发送回的。因此,该确认是“假”确认。