gpt4 book ai didi

android - 对特征/描述符寻址和 UUID 感到困惑

转载 作者:行者123 更新时间:2023-12-04 02:57:35 24 4
gpt4 key购买 nike

我一直假设 BLE 外围设备上的每个特征/服务/描述符都有一个唯一的 UUID。我认为 UUID 不仅描述了它提供的内容,而且还为其提供了一个唯一的句柄。基本上,我认为传输层使用它来识别外围和中央之间的特定实例。

但在使用 Android 时,我发现要具有可通知的特征,您不仅必须使用 setCharacteristicNotification API,还必须在规范化的位置询问特定描述符的特征UUID (00002902-0000-1000-8000-00805f9b34fb),然后设置该描述符的值以允许适当的通知/指示。

我不明白的是,这意味着对于我的设备具有的每个可通知特征,它都有一个与该特定 UUID 相关联的描述符。如果我有 5 个可通知特征,我将有 5 个不同的描述符,但都具有相同的 UUID。那么当 Android 设备写入这些描述符之一时,它使用什么地址来指定其他看起来相似的描述符?这一切都是在引擎盖下神奇地管理的吗?

最佳答案

UUID 只是描述它是什么类型的服务/特征/描述符。

(G)ATT 数据库建立在称为属性的元组列表(句柄、uuid、值)上。句柄是一个 16 位的唯一标识符,在传输层用于标识属性。

GATT 标准描述了一种对值进行分组的方法。首先你有特征声明,特征值和一组描述符分组到一个特征。然后您将服务定义加上多个特征组合到一个服务。

你通过 uuid 查找客户端特征配置描述符,分组到你感兴趣的特征,并向它写入 0x0001。 Android 的 GATT 客户端在内部为其查找句柄并发送写入请求。您的应用无权访问句柄;只有高层特征对象。

关于android - 对特征/描述符寻址和 UUID 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52192378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com