news 2026/6/15 14:03:26

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/5/12 8:56:07

智能驾驶关键技术:高精地图到NOA全解析

你提到的这些功能(高精地图引擎、匹配定位、EHP/ADASIS、NOA/NOP等)都是当前智能驾驶系统,特别是L2及以上级别自动驾驶中的关键技术模块。下面我为你逐一解释它们的含义、作用以及相互之间的关系:1. 高精地图引擎(HD M…

作者头像 李华
网站建设 2026/6/15 12:41:16

usb 通讯

USB(Universal Serial Bus,通用串行总线)是一种广泛使用的串行通信协议,用于连接计算机与外部设备(如键盘、鼠标、打印机、存储设备、摄像头等)。USB 通信具有即插即用、热插拔、高传输速率和供电能力等优点…

作者头像 李华
网站建设 2026/6/10 17:54:55

微调也能很轻松:Unsloth让小白玩转LLM

微调也能很轻松:Unsloth让小白玩转LLM 你是否曾觉得大模型微调是“高手专属”?动辄几十GB显存、复杂的环境配置、漫长的训练时间,让人望而却步。但今天我们要告诉你:微调也可以像搭积木一样简单。 借助 Unsloth 这个开源的LLM微…

作者头像 李华
网站建设 2026/6/15 12:41:33

AI音乐创作新玩法|NotaGen镜像支持多时期作曲家生成

AI音乐创作新玩法|NotaGen镜像支持多时期作曲家生成 1. 打开AI古典音乐创作的大门 你是否曾幻想过,只需轻点几下鼠标,就能让贝多芬的钢琴曲在屏幕上流淌,或是让巴赫的赋格旋律自动谱写?现在,这一切不再是…

作者头像 李华