news 2026/8/21 3:04:59

GATT 服务定义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GATT 服务定义

GATT(Generic Attribute Profile,通用属性协议)是蓝牙低功耗(BLE, Bluetooth Low Energy)技术中用于在两个设备之间传输数据的核心协议之一。GATT 定义了如何通过 BLE 连接来组织和交换数据。


一、GATT 基本概念

GATT 建立在 ATT(Attribute Protocol,属性协议)之上,使用“属性”作为数据的基本单元。GATT 的核心思想是:服务(Service) → 特征(Characteristic) → 描述符(Descriptor)的层级结构。

1. 角色定义

  • GATT Server(服务器):存储数据并响应来自客户端的请求。
  • GATT Client(客户端):发起读写请求以访问服务器上的数据。

注意:一个设备可以同时是 GATT Client 和 GATT Server(例如手机与智能手表配对时,手机读取手表心率数据,此时手表是 Server,手机是 Client;但若手表要从手机获取时间,则角色反转)。


二、GATT 服务(Service)

定义:

  • Service是一组相关的数据和功能的集合。
  • 每个 Service 由一个16-bit 或 128-bit UUID唯一标识。
  • 可以是标准服务(如 Battery Service, Heart Rate Service)或自定义服务

类型:

  • Primary Service(主服务):设备的主要功能服务。
  • Secondary Service(次服务):被其他主服务引用的辅助服务(较少使用)。

三、特征(Characteristic)

定义:

  • Characteristic 是 Service 中包含的具体数据点。
  • 每个 Characteristic 包含:
    • 声明(Declaration):说明该特征的 UUID、属性(读/写/通知等)。
    • 值(Value):实际数据内容。
    • 描述符(Descriptors)(可选):提供关于值的额外信息(如单位、格式、客户端配置等)。

属性权限(Properties)示例:

  • Read(可读)
  • Write(可写)
  • Notify(通知:Server 主动推送,无需 Client 请求)
  • Indicate(指示:类似通知,但需 Client 确认)
  • Broadcast(广播,较少用)

四、描述符(Descriptor)

  • 描述符是附加在 Characteristic 上的属性,用于描述或控制该特征的行为。
  • 最常见的描述符:
    • Client Characteristic Configuration Descriptor (CCCD):用于启用/禁用 Notify 或 Indicate。
    • Characteristic User Description:用户可读的描述文本。
    • Presentation Format:定义数据的格式(如符号、指数、单位等)。

五、GATT 服务定义示例(伪代码 / 结构)

Service: Heart Rate (UUID: 0x180D) │ ├── Characteristic: Heart Rate Measurement (UUID: 0x2A37) │ ├── Properties: Notify │ ├── Value: [flags][heart_rate] (e.g., 0x00 0x45 = 69 bpm) │ └── Descriptor: CCCD (UUID: 0x2902) │ ├── Characteristic: Body Sensor Location (UUID: 0x2A38) │ ├── Properties: Read │ └── Value: 0x01 (Chest) │ └── Characteristic: Heart Rate Control Point (UUID: 0x2A39) ├── Properties: Write └── Value: Used to reset energy expended, etc.

六、标准 vs 自定义服务

  • 标准服务:由 Bluetooth SIG 定义,使用 16-bit UUID(如 0x180F 表示 Battery Service)。
  • 自定义服务:开发者自定义,必须使用 128-bit UUID(基于 Base UUID:0000xxxx-0000-1000-8000-00805F9B34FB)。

七、开发中的注意事项

  1. MTU 大小:默认 ATT MTU 为 23 字节,可通过协商增大(提高吞吐量)。
  2. Notify/Indicate 需要 CCCD 使能:客户端必须先写入 CCCD 才能接收通知。
  3. 服务发现流程:连接后,Client 通常会执行“服务发现”以了解 Server 支持哪些服务和特征。
  4. 并发与安全:考虑加密(Bonding)、权限(Authentication/Authorization)等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 13:58:56

Qwen2.5-0.5B如何做文案创作?多轮对话部署案例

Qwen2.5-0.5B如何做文案创作?多轮对话部署案例 1. 小模型也能大作为:为什么选Qwen2.5-0.5B做文案助手? 你可能听说过动辄几十亿、上百亿参数的大模型,但今天我们要聊的这位“小个子”——Qwen2.5-0.5B-Instruct,却能…

作者头像 李华
网站建设 2026/8/19 11:08:18

麦橘超然更新日志解读,新功能真香

麦橘超然更新日志解读,新功能真香 1. 引言:从“跑不动”到“随手出图”的跨越 你是不是也经历过这样的时刻?看到别人用 FLUX.1 生成惊艳画作,自己却因为显卡只有 8GB 甚至更低而望而却步。模型太大、显存爆红、推理失败——这些…

作者头像 李华
网站建设 2026/8/9 23:49:20

等官方优化中:Live Avatar对24GB显卡支持展望

等官方优化中:Live Avatar对24GB显卡支持展望 1. 当前显存限制下的现实挑战 Live Avatar是由阿里联合高校开源的一款前沿数字人模型,具备从文本、图像和音频生成高质量动态虚拟形象的能力。其核心技术基于14B参数规模的DiT架构,在生成质量与…

作者头像 李华
网站建设 2026/8/19 8:41:40

Glyph推理界面打不开?网页推理模式使用问题解答

Glyph推理界面打不开?网页推理模式使用问题解答 1. Glyph-视觉推理:让长文本处理更高效 你有没有遇到过这样的情况:想要让大模型读一篇超长文档,结果发现上下文长度不够,要么截断内容,要么直接报错&#…

作者头像 李华
网站建设 2026/8/18 20:37:19

GPT-OSS模型微调准备:数据格式与环境配置

GPT-OSS模型微调准备:数据格式与环境配置 你是否也在寻找一个高效、开源且支持本地部署的大语言模型?最近,OpenAI推出的GPT-OSS系列模型引起了广泛关注。特别是gpt-oss-20b-WEBUI这一版本,不仅具备强大的生成能力,还集…

作者头像 李华