上一篇我们站在同心圆外面,看清了 GATT 只管五件事的边界。这一篇我们走进圆圈内部,跟着一台电脑去读一支温度传感器,把这条路线上会遇到的所有关卡——谁先开口、数据跑在什么报文里、货物摆在哪个货架、货架编号怎么用、盘点结果能不能留到下次、货架调整过又该怎么办——一关不落地走一遍。目录一、协议栈模型:GATT 不是一层,是一套使用 ATT 的规则二、Client 与 Server:不是身份,是一次角色扮演三、六种典型场景:GATT 的一生就这些戏四、Profile fundamentals:动手前必须立好的五条底层规矩五、ATT PDU 长什么样:信封上的三栏六、Attribute 四要素:货架编号、商品名、货物、门禁规则七、属性缓存:重连之后,货架还要不要重新逛7.1 缓存成立的前提与 Service Changed7.2 Database Hash:无绑定设备也能用的指纹7.3 信任关系决定缓存的有效期7.4 三个容易被忽略的边角规则八、Robust Caching:从被动通知升级为主动拦截8.1 每个 Client 两种状态,初始状态有讲究8.2 unaware 时的请求:什么被拦,什么不拦8.3 翻身路径之一:单 bearer + Service Changed 确认8.4 翻身路径之二:单 bearer + 0x12 或直接读哈希8.5 翻身路径之三:多 bearer 必须先排空所有信道8.6 服务器侧状态机伪代码九、Attribute grouping:发现原语的使用边界十、UUID:空口只有 2 字节和 16 字节两种长度十一、GATT Profile hierarchy:Profile、Service、Characteristic 三级嵌套11.1 Primary 与 Secondary:正门与内部零件11.2 服务版本演化:只许做加法11.3 Included services:引用而非复制11.4 Characteristic 定义的组成十二、Configured Broadcast:不建连也能拿到特征值十三、把整条流程收束成一次完整旅程十四、测验路线的起点是一张看起来毫不起眼的图:一台电脑、一支温度计、两根箭头。电脑是温度服务的 Client,传感器是 Server。电脑发起过程去配置传感器、读取传感器的值;传感器把自己在温度服务里暴露的特征信息提供出来,允许其中一部分特征被写入,再对读请求回应合适的值。就这么简单的交互,背后却是 GATT 整个运行模型的骨架。我们按从下往上、从数据到流程的顺序,把它彻底拆开。一、协议
阅读完成 · 觉得有帮助?