协议
CharacteristicNotifier
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
收听特色通知以及指示。
OnNotification
在以下情况下调用:特征值通知或指示: 。
- 向
value
请求更新后的特征的值。
- 响应 空响应应立即作为 确认已收到通知(用于流控制)。
请求
名称 | 类型 |
---|---|
value |
ReadValue
|
响应
<空>
客户端
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
ConnectToService
将 RemoteService 与给定的标识符连接起来。仅 1 个连接 所有项目允许。
如果出现错误,service
将被关闭,并附有一份介绍性说明
原因。
- error 如果
handle
无效,则返回ZX_ERR_INVALID_ARGS
。 - error 如果未找到该服务,则返回
ZX_ERR_NOT_FOUND
。 - error 若移除服务,则返回
ZX_ERR_CONNECTION_RESET
。 - error 如果对等体断开连接,则返回
ZX_ERR_NOT_CONNECTED
。 - 错误:如果服务已连接,则返回
ZX_ERR_ALREADY_EXISTS
。
请求
名称 | 类型 |
---|---|
handle |
ServiceHandle
|
service |
server_end<RemoteService>
|
WatchServices
枚举在此客户端代表的对等设备上找到的服务。
您可以通过在 uuids
中指定 UUID 列表来过滤结果。这个
方法遵循挂起的 get 模式。在初始请求中,
完整快照。使用相同集的后续调用
的 uuids
人只有在收到一项或多项服务后才会收到响应
自最长
近期通话。使用新值 uuids
的调用会重置过滤条件并
获得完整的快照
标识名可以跨服务重复使用,因此标识名可能同时存在于
updated
和removed
。因此,我们建议您
在更新服务之前已移除的服务。
要进一步与服务交互,客户端必须获取 RemoteService 调用 ConnectToService() 协议。
- 请求
uuids
UUID 许可名单。如果留空,所有服务都将 返回。
- 回复
updated
之后添加或修改的服务 上次调用 WatchServices()。返回的 ServiceInfo 表 仅包含每项服务的基本信息characteristics
和includes
字段将为 null。如果某项服务 添加/修改过,然后又从上次调用后删除, 存在于removed
中,而不是updated
中。 如果因包含新的uuids
值的新调用而结束,则updated
将为空。 - 响应
removed
已移除服务的句柄 自上次调用 WatchServices() 之后。
请求
名称 | 类型 |
---|---|
uuids |
vector<fuchsia.bluetooth/Uuid>
|
响应
名称 | 类型 |
---|---|
updated |
vector<ServiceInfo>[65535]
|
removed |
vector<Handle>[65535]
|
LocalService
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
用于提供本地 GATT 服务的接口。关闭此协议的 server_end 会导致 GATT 服务将从本地 GATT 数据库中移除。同样,关闭 client_end 表示蓝牙堆栈已从其 GATT 数据库中移除此服务。
CharacteristicConfiguration
它可通知当前配置特定特征/描述符的 特定对等体。当对等 GATT 客户端更改配置时,系统会调用此函数。
蓝牙堆栈会在重新连接后保持每个对等方的配置状态。 因此,当对等方通过 新连接的对等体配置的初始持久状态。不过,客户端 不应依赖于蓝牙堆栈无限期保留此状态。
- 请求
peer_id
:与此特定 CCC 相关联的 GATT 客户端的 PeerId。 - 请求
handle
与notify
和indicate
参数。 - 请求
notify
如果客户端已启用通知,则为 True,否则为 false。 - 请求
indicate
;如果客户端已启用指示,则为 True,否则为 false。
- response empty 返回任何内容以确认特征配置。
请求
名称 | 类型 |
---|---|
peer_id |
fuchsia.bluetooth/PeerId
|
handle |
Handle
|
notify |
bool
|
indicate |
bool
|
响应
<空>
OnIndicateValue
此事件用于向对等方发送指示。应使用指示标志,而不是 在服务需要对等方确认更新时发送通知。
指示不应发送给尚未启用特定指示 特征 - 如果发送,它们将不会传播。蓝牙堆栈 在服务的生命周期内一直跟踪此配置。
本地生活服务必须跟踪由ValueChangedCredit
提供的可用赠金
方法,并最多发送这么多 OnNotifyValue
和 OnIndicateValue
事件。如果
发送的事件数多于可用赠送金额,或者参数无效,则协议只能
已关闭。
- 请求
update
:与已更改的特征相关联的参数。 - 请求
confirmation
当将要更新的所有对等体都确认了指示时,confirmation
收到了 ZX_EVENTPAIR_SIGNALLED 信号。如果发生以下情况,confirmation
将会停业: 表示任何对等体发生故障(例如,对等体尚未配置指示) 连接,或未在 30 秒的 ATT 事务超时内确认(蓝牙 5.3 卷3 F 3.3.3 部分)。要跟踪每个对等体的指示确认, 实现可以在update.peer_ids
中使用单个 ID 发送此事件。
响应
名称 | 类型 |
---|---|
update |
ValueChangedParameters
|
confirmation |
handle<eventpair>
|
OnNotifyValue
此事件用于向对等端发送通知。应使用通知,而不是 当服务不需要对等方确认更新时,用于指明这一点。
不应向尚未启用通知功能的同行发送通知。 特定特征 - 如果发送,它们将不会传播。蓝牙 会在服务的生命周期内跟踪此配置。
本地生活服务必须跟踪由ValueChangedCredit
提供的可用赠金
方法,并最多发送这么多 OnNotifyValue
和 OnIndicateValue
事件。如果
发送的事件数多于可用赠送金额,或者参数无效,则协议只能
已关闭。
响应
名称 | 类型 |
---|---|
payload |
ValueChangedParameters
|
OnSuppressDiscovery
此事件之后,新对等方将无法再发现该服务,但对等方 已发现此服务的该组织仍然可以访问该服务。此邮件应每发送一次 服务生命周期;发送多次会关闭协议并断开 GATT 客户端连接。
响应
<空>
PeerUpdate
调用以提供对等的 GATT 信息。除非 之前的调用收到了响应。因此,该实现可以直接忽略 如果对任何 PeerUpdate 字段都不感兴趣,则再次调用此函数。
在将任何其他交互从对等端传播到 LocalService (Write/ReadValue, CharacteristicConfiguration) 因为前面的所有 PeerUpdate 均已确认。
当前未发送。如需寻求支持,请在 https://fxbug.dev/42178509 上发表评论
- 请求
peer_id
更新涉及的 PeerId。始终存在。 - 请求
mtu
适用于此通知/指示的字节数上限 对等设备超出此限制的所有字节都会被静默截断。大多数客户无需担心 除非他们使用通知/指示来实现高吞吐量。 可选。
- response 空响应,用于确认已收到更新。
请求
名称 | 类型 |
---|---|
payload |
LocalServicePeerUpdateRequest
|
响应
<空>
ReadValue
在对等方请求读取特征或描述符的值时调用。时间是 可以保证对等网络满足与此属性相关联的权限。
- request
peer_id
发出读取请求的 GATT 客户端的 PeerId。 - request
handle
:所请求描述符/特征的句柄。 - 请求
offset
:从哪个偏移量开始读取请求的值。
- response
value
特征的值。
- 错误。如需了解可能的错误,请参阅
gatt2.Error
文档。
请求
名称 | 类型 |
---|---|
peer_id |
fuchsia.bluetooth/PeerId
|
handle |
Handle
|
offset |
int32
|
响应
名称 | 类型 |
---|---|
payload |
LocalService_ReadValue_Result
|
ValueChangedCredit
为发送指示/通知充值。实现人员应从
在调用此方法之前,剩余 INITIAL_VALUE_CHANGED_CREDITS 笔赠金。实现人员必须
还能跟踪自己拥有的可用赠送金额实现人员只能发送一个 OnNotificationsValue
每个功劳。请注意,只有在调用 ValueChangedCredit
之后,
如果自上次通话后至少发送了一条指示/通知。
请求
名称 | 类型 |
---|---|
additional_credit |
uint8
|
WriteValue
在对等方发出写入特征或描述符值的请求时调用。它 可保证对等方满足与此属性关联的权限。
- request
peer_id
发出写入请求的 GATT 客户端的 PeerId。始终存在。 - request
handle
:所请求描述符/特征的句柄。始终存在。 - 请求
offset
:开始写入值的偏移量。如果偏移为 0,则任何 现有值应被新值覆盖。否则, offset:(offset + len(value)) 应更改为value
。始终存在。 - 请求
value
描述符/特征的新值。始终存在,但可能 为空字符串。
- response 值更新后,实现必须发送空响应 进行确认。
- 错误。如需了解可能的错误,请参阅
gatt2.Error
文档。
请求
名称 | 类型 |
---|---|
payload |
LocalServiceWriteValueRequest
|
响应
名称 | 类型 |
---|---|
payload |
LocalService_WriteValue_Result
|
RemoteService
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
DiscoverCharacteristics
返回属于某个类别的特征和特征描述符 。
请求
<空>
响应
名称 | 类型 |
---|---|
characteristics |
vector<Characteristic>[32767]
|
ReadByType
使用给定 uuid
读取特征和描述符。
此方法对于在发现完成之前读取值非常有用, 从而缩短延迟时间
- 请求
uuid
要读取的特征/描述符的 UUID。
- 响应
results
读取结果。如果没有,则为空 会读取匹配的值。如果读取某个值导致 权限错误,则会包含句柄和错误。
- 错误:如果
uuid
引用内部INVALID_PARAMETERS
预留描述符类型(例如 Client Characteristic 配置描述符)。 - 错误:如果读取的结果数量超出上限,则返回
TOO_MANY_RESULTS
。考虑读取特征/描述符 执行发现操作后单独处理。 - error 若服务器返回并非特定于该实例的错误,则返回
FAILURE
一个结果。
请求
名称 | 类型 |
---|---|
uuid |
fuchsia.bluetooth/Uuid
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadByType_Result
|
ReadCharacteristic
读取具有指定 handle
的特征的值。
- 请求
handle
:要读取的特征句柄。 - 请求
options
适用于读取的选项。
- response
value
特征的值。
- error 如果
handle
无效,则返回INVALID_HANDLE
。 - error 如果
options
无效,则返回INVALID_PARAMETERS
。 - 错误,如果服务器返回
READ_NOT_PERMITTED
或INSUFFICIENT_*
拒绝读取请求 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadCharacteristic_Result
|
ReadDescriptor
使用 handle
和
并在回复中返回。
- 请求
handle
要读取的描述符句柄。 - 请求
options
适用于读取的选项。
- response
value
描述符的值。
- error 如果
handle
无效,则返回INVALID_HANDLE
。 - error 如果
options
无效,则返回INVALID_PARAMETERS
。 - 错误,如果服务器返回
READ_NOT_PERMITTED
或INSUFFICIENT_*
拒绝读取请求 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadDescriptor_Result
|
RegisterCharacteristicNotifier
订阅通知和这些特征的
指定的 handle
。
系统会根据以下情况启用通知或指示: 特征属性。将优先选择符合以下条件的指示: 支持。如果特征没有 “通知”或“指示”属性。
系统将发出一个写入请求,以配置 如果包含客户端特征,则提供通知/指示 配置描述符。如果发生错误,则此方法会失败, 写入描述符。
成功完成时,可以使用 notifier
协议在发生以下情况时收到通知
对等体发送通知或指示。征兆
系统会自动确认该协议丢弃后,
可能会结束。
- 向
handle
请求特征句柄。 - 请求
notifier
用于通知的协议。
- 响应;如果注册,系统会立即发送空响应 成功。
- error 如果该特征不支持,则返回
FAILURE
通知或指示。 - error 如果
handle
无效,则返回INVALID_HANDLE
。 - error 针对某个对象返回
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
描述符写入错误。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
notifier |
CharacteristicNotifier
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_RegisterCharacteristicNotifier_Result
|
WriteCharacteristic
使用提供的 handle
将 value
写入特征
options
。
当某写入操作已完成时,建议不要发送额外的写入操作 正在进行中(服务器可能会以任何顺序同时接收写入)。
- 请求
handle
要写入的特征。 - 请求
value
要写入的值。 - 请求
options
适用于写入的选项。
- 成功响应后,系统将发送空响应
(如果是
options.with_response
为 false)
- error 如果
handle
无效,则返回INVALID_HANDLE
。 - error 如果
options
无效,则返回INVALID_PARAMETERS
。 - error,如果服务器返回
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
拒绝写入请求并说明原因。 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
value |
vector<uint8>[512]
|
options |
WriteOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_WriteCharacteristic_Result
|
WriteDescriptor
使用 handle
将 value
写入特征描述符。
当某写入操作已完成时,建议不要发送额外的写入操作
正在进行中(服务器可能会以任何顺序同时接收写入)。
- 请求
handle
:要写入的描述符句柄。 - 请求
value
要写入的值。 - 请求
options
适用于写入的选项。
- 成功响应后,系统将发送空响应
(如果是
options.with_response
为 false)
- error 如果
handle
无效或引用INVALID_HANDLE
内部保留的描述符类型(例如 特征配置描述符)。 - error 如果
options
无效,则返回INVALID_PARAMETERS
。 - 错误,如果服务器返回
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
并说明原因。 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
value |
vector<uint8>[512]
|
options |
WriteOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_WriteDescriptor_Result
|
服务器
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
PublishService
发布指定的 service
,使其可供所有远程对等端使用。发布后
该服务被定义为有 INITIAL_VALUE_CHANGED_CREDITS 个额度可用于发送
指示/通知。
调用方必须为下文中列出的特征和描述符分配不同的句柄
info
。这些标识符将用于发送给 service
的请求。
- request
info
定义 GATT 服务的结构。包括特征和 以及将提供给对等方的服务句柄 必须在发布到此服务器的所有服务中是唯一的。 - 请求
service
根据载述的行为提供服务的实现 (针对LocalService
)。
- response 空响应表示服务已成功发布。
- 错误。如需了解可能的故障模式,请参阅
gatt2.PublishServiceError
。
请求
名称 | 类型 |
---|---|
info |
ServiceInfo
|
service |
LocalService
|
响应
名称 | 类型 |
---|---|
payload |
Server_PublishService_Result
|
结构体
处理
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
uint64
|
无默认设置 |
LocalService_ReadValue_Response
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
vector<uint8>[512]
|
无默认设置 |
LocalService_WriteValue_Response
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
<空>
RemoteService_ReadByType_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
results |
vector<ReadByTypeResult>[65535]
|
无默认设置 |
RemoteService_ReadCharacteristic_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
ReadValue
|
无默认设置 |
RemoteService_ReadDescriptor_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
ReadValue
|
无默认设置 |
RemoteService_RegisterCharacteristicNotifier_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
<空>
RemoteService_WriteCharacteristic_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
<空>
RemoteService_WriteDescriptor_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
<空>
Server_PublishService_Response
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
<空>
ServiceHandle
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
uint64
|
无默认设置 |
ShortReadOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于读取简短特征或描述符的选项 值。短值是指在一条讯息中能够体现出来的值 至少为 22 个字节。目前这是一个空占位符 没有选项。
<空>
精英
错误:strict
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
bluetooth.gatt2.* 方法返回的错误。
这些值与蓝牙 5.2 Vol 中的值相对应。3 G 部分表 3.4, 和蓝牙核心规范 v9 第 B 部分表 1.1 的补充, 但仅供参考客户端不应该依赖 值保持恒定。系统会处理规范中省略的值 且不会返回给客户端。
LocalService 方法只能返回某些错误。这些是 在评论中。
名称 | 值 | 说明 |
---|---|---|
INVALID_HANDLE |
1 |
标识名所指示的属性无效。可能已被移除。 这可由 LocalService 方法返回。 |
READ_NOT_PERMITTED |
2 |
此属性不可读取。 |
WRITE_NOT_PERMITTED |
3 |
此属性不可写入。 |
INVALID_PDU |
4 |
表示从服务器收到的响应无效。 |
INSUFFICIENT_AUTHENTICATION |
5 |
此属性要求进行身份验证,但客户端未经过身份验证。 |
INVALID_OFFSET |
7 |
表示读取或写入请求中使用的偏移量超过了 值的边界。 这可由 LocalService 方法返回。 |
INSUFFICIENT_AUTHORIZATION |
8 |
此属性需要授权,但客户端未获得授权。 |
INSUFFICIENT_ENCRYPTION_KEY_SIZE |
12 |
此属性要求使用更大的加密密钥加密的连接。 |
INVALID_ATTRIBUTE_VALUE_LENGTH |
13 |
表示写入请求中指定的值将超过最大值 指定字符或描述符允许的长度。 这可由 LocalService 方法返回。 |
UNLIKELY_ERROR |
14 |
发生了无法归类为以上某种错误的常规错误 特定错误。 这可由 LocalService 方法返回。 |
INSUFFICIENT_ENCRYPTION |
15 |
此属性要求加密,但连接未加密。 |
INSUFFICIENT_RESOURCES |
17 |
服务器没有足够的资源来完成任务。 这可由 LocalService 方法返回。 |
VALUE_NOT_ALLOWED |
19 |
不允许使用此值。 这可由 LocalService 方法返回。 |
APPLICATION_ERROR_80 |
128 |
应用错误。这些元素的用途是在应用中指定 。 这些可能全部都由 LocalService 方法返回。 |
APPLICATION_ERROR_81 |
129 |
|
APPLICATION_ERROR_82 |
130 |
|
APPLICATION_ERROR_83 |
131 |
|
APPLICATION_ERROR_84 |
132 |
|
APPLICATION_ERROR_85 |
133 |
|
APPLICATION_ERROR_86 |
134 |
|
APPLICATION_ERROR_87 |
135 |
|
APPLICATION_ERROR_88 |
136 |
|
APPLICATION_ERROR_89 |
137 |
|
APPLICATION_ERROR_8A |
138 |
|
APPLICATION_ERROR_8B |
139 |
|
APPLICATION_ERROR_8C |
140 |
|
APPLICATION_ERROR_8D |
141 |
|
APPLICATION_ERROR_8E |
142 |
|
APPLICATION_ERROR_8F |
143 |
|
APPLICATION_ERROR_90 |
144 |
|
APPLICATION_ERROR_91 |
145 |
|
APPLICATION_ERROR_92 |
146 |
|
APPLICATION_ERROR_93 |
147 |
|
APPLICATION_ERROR_94 |
148 |
|
APPLICATION_ERROR_95 |
149 |
|
APPLICATION_ERROR_96 |
150 |
|
APPLICATION_ERROR_97 |
151 |
|
APPLICATION_ERROR_98 |
152 |
|
APPLICATION_ERROR_99 |
153 |
|
APPLICATION_ERROR_9A |
154 |
|
APPLICATION_ERROR_9B |
155 |
|
APPLICATION_ERROR_9C |
156 |
|
APPLICATION_ERROR_9D |
157 |
|
APPLICATION_ERROR_9E |
158 |
|
APPLICATION_ERROR_9F |
159 |
|
WRITE_REQUEST_REJECTED |
252 |
写入请求在配置文件或服务级别被拒绝。 |
CCC_DESCRIPTOR_IMPROPERLY_CONFIGURED |
253 |
客户端特征配置描述符不正确 配置。 |
PROCEDURE_ALREADY_IN_PROGRESS |
254 |
配置文件或服务程序已在进行中。 |
OUT_OF_RANGE |
255 |
配置文件或服务等级的值超出范围。 |
INVALID_PARAMETERS |
257 |
一个或多个 FIDL 调用参数无效。请参阅参数 文档。 |
TOO_MANY_RESULTS |
258 |
表示读取的结果多于 FIDL 响应所能容纳的结果。 请考虑分别读取属性。 |
PublishServiceError 柔性
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
服务发布期间可能发生的错误。
名称 | 值 | 说明 |
---|---|---|
INVALID_SERVICE_HANDLE |
1 |
服务句柄无效或已在发布服务的服务器上使用。 |
INVALID_UUID |
2 |
提供的服务 UUID 无效。 |
INVALID_CHARACTERISTICS |
3 |
“ |
UNLIKELY_ERROR |
4 |
发生了无法归类为更具体的错误的常见错误。 |
ServiceKind 严格
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
GATT 服务的种类(“类型”),如蓝牙核心规范 v5.3 第 5 卷中所述。1 A 部分 6.5.1.
名称 | 值 | 说明 |
---|---|---|
主电子邮件 |
1 |
“提供设备功能且可独立使用的服务”(同上) |
辅助电子邮件 |
2 |
“提供与主服务相关的额外功能 [...] 的服务 服务,并且包含至少一项主要服务(同上) |
WriteMode flexible
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示针对写入特征和 发送描述符。
名称 | 值 | 说明 |
---|---|---|
默认 |
1 |
在 |
RELIABLE |
2 |
在 |
WITHOUT_RESPONSE |
3 |
在 |
表格
AttributePermissions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
指定特定属性值的访问权限。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
read |
SecurityRequirements
|
指定属性是否具有读取权限。如果不存在, 属性值无法读取。否则,只有在 是否满足 SecurityRequirements 表中指定的权限。 |
2 |
write |
SecurityRequirements
|
指定属性是否具有写入权限。如果不存在, 属性值无法写入。否则,只能写入 如果满足 SecurityRequirements 表中指定的权限,则会发生此错误。 |
3 |
update |
SecurityRequirements
|
指定客户端要订阅的安全要求 通知或特征指示。特征的 使用 NOTIFY 和 INDICATE 特征属性。如果局部特征具有 那么必须存在此字段。否则,此字段 。 对于“描述符”,系统会忽略此字段。 |
特征
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示本地或远程 GATT 特征。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
在服务中唯一标识此特征。 对于局部特征,指定的标识名必须在 所有特征和描述符句柄。 始终存在。对于本地特征,此值是必填值。 |
2 |
type |
fuchsia.bluetooth/Uuid
|
用于标识此特征类型的 UUID。 始终存在。本地特征的必需属性。 |
3 |
properties |
CharacteristicPropertyBits
|
特征属性位字段。 始终存在。本地特征的必需属性。 |
4 |
permissions |
AttributePermissions
|
此特征的属性权限。遥控器用 因此只有在获得相关权限后, 通过读取和写入请求发现的数据。 对于本地特征,此值是必填值。 |
5 |
descriptors |
vector<Descriptor>[65532]
|
此特征的描述符。 仅在非空时显示。对于当地特征,此属性为可选属性。 |
Descriptor
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示本地或远程 GATT 特征描述符。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
在服务中唯一标识此描述符。 对于本地描述符,指定的句柄必须是唯一的 所有特征和描述符句柄。 始终存在。对于本地描述符,此值是必需的。 |
2 |
type |
fuchsia.bluetooth/Uuid
|
用于标识此描述符类型的 UUID。 始终存在。对于本地描述符,此值是必需的。 |
3 |
permissions |
AttributePermissions
|
此描述符的属性权限。遥控器用 描述符,则只有在获得相关权限后,该值才会存在 通过读取和写入请求发现的数据。 对于本地描述符,此值是必需的。 |
LocalServicePeerUpdateRequest
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
peer_id |
fuchsia.bluetooth/PeerId
|
|
2 |
mtu |
uint16
|
LocalServiceWriteValueRequest
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
peer_id |
fuchsia.bluetooth/PeerId
|
|
2 |
handle |
Handle
|
|
3 |
offset |
uint32
|
|
4 |
value |
vector<uint8>[512]
|
LongReadOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于读取长特征或描述符的受支持选项 值。长值是指不适合单独使用的值 消息(长度超过 22 个字节)。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
offset |
uint16
|
开始读取的字节。必须小于值的长度。 选填。 默认值:0 |
2 |
max_bytes |
uint16
|
要读取的字节数上限。
选填。
默认值: |
ReadByTypeResult
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
RemoteService.ReadByType
返回的结果。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
特征或描述符句柄。 |
2 |
value |
ReadValue
|
特征或描述符的值(如果读取成功)。 |
3 |
error |
Error
|
无法读取值的原因(如果读取该值导致错误)。 |
ReadValue
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
用于封装从服务器收到的可能被截断的值。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
特征或描述符句柄。始终存在。 |
2 |
value |
vector<uint8>[512]
|
特征或描述符的值。始终存在。 |
3 |
maybe_truncated |
bool
|
如果 |
SecurityRequirements
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示加密、身份验证和授权权限, 为其分配特定访问权限
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
encryption_required |
bool
|
如果为 true,则必须对该实体链路进行加密才能访问此属性。如果不存在或 false,则此属性允许未加密的访问。 |
2 |
authentication_required |
bool
|
如果为 true,该实体链接必须经过身份验证才能访问此属性。如果不存在或 false,则此属性允许未经身份验证的访问。 |
3 |
authorization_required |
bool
|
如果为 true,则客户端需要获得授权才能访问此属性。如果不存在或 false,则此属性允许未经授权的访问。 |
ServiceInfo
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示本地或远程 GATT 服务。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
ServiceHandle
|
此 GATT 服务的唯一标识符。
如果表示远程服务,则始终显示;在这种情况下,此名称在整个
返回此 ServiceInfo 的客户端。
对于本地服务而言是必需的,在这种情况下,它在已发布的所有服务中必须是唯一的
单个服务器实例可用于 |
2 |
kind |
ServiceKind
|
指明该服务是主要服务还是辅助服务。 对于远程服务,始终显示。对于本地服务,此属性为可选属性 默认值:ServiceKind::PRIMARY |
3 |
type |
fuchsia.bluetooth/Uuid
|
用于标识此服务类型的 UUID。 可能有多个服务具有相同的 UUID。 对于远程服务,始终显示。对于本地服务而言是必需的。 |
4 |
characteristics |
vector<Characteristic>[32767]
|
此服务的特征。 对于本地服务而言是必需的。对于远程服务,一律不显示。 |
5 |
includes |
vector<ServiceHandle>[65535]
|
此服务包含的其他服务的句柄。 对于本地服务,此参数为可选参数。对于远程服务,一律不显示。 TODO(https://fxbug.dev/42147529):本地服务目前不支持此操作。 |
ValueChangedParameters
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
用于指示特征值从 LocalService 更改为对等参数的参数。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
接收信号的特征值的句柄。 必填。 |
2 |
value |
vector<uint8>[512]
|
更新后的特征值。
对于使用高吞吐量指示/通知的客户端,请注意(不推荐):
虽然静态限制为 |
3 |
peer_ids |
vector<fuchsia.bluetooth/PeerId>
|
仅向一部分对等设备发出信号。
如果不存在或为空,则所有可更新的对等设备都会发出信号。
如果包含,则只有此列表中的对等设备会收到信号。
仅当对等方为每个 |
WriteOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于写入特征/描述符值的支持选项 服务器
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
write_mode |
WriteMode
|
写入操作的模式。对于描述符,只有 支持 WriteMode.DEFAULT 选填。 默认值:WriteMode.DEFAULT |
2 |
offset |
uint16
|
请求从指定字节开始写入。
如果 |
联合体
LocalService_ReadValue_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LocalService_ReadValue_Response
|
|
2 |
err |
Error
|
LocalService_WriteValue_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LocalService_WriteValue_Response
|
|
2 |
err |
Error
|
ReadOptions 柔性环境
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于读取特征或描述符的受支持选项 值。
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
short_read |
ShortReadOptions
|
执行短时间读取,此时可能会被截断(如 结果中可能被截断) GATT 服务中的大多数读取操作都是短时间读取(小于等于 22 字节)。 |
2 |
long_read |
LongReadOptions
|
如果存在,则使用指定的选项执行长读取。 选填。 默认:将执行短时间读取。 |
RemoteService_ReadByType_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadByType_Response
|
|
2 |
err |
Error
|
RemoteService_ReadCharacteristic_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_ReadDescriptor_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadDescriptor_Response
|
|
2 |
err |
Error
|
RemoteService_RegisterCharacteristicNotifier_Result(严格)
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_RegisterCharacteristicNotifier_Response
|
|
2 |
err |
Error
|
RemoteService_WriteCharacteristic_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_WriteCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_WriteDescriptor_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_WriteDescriptor_Response
|
|
2 |
err |
Error
|
Server_PublishService_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Server_PublishService_Response
|
|
2 |
err |
PublishServiceError
|
位
CharacteristicPropertyBits strict
类型:uint16
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
特征属性位字段的可能值。这些参数指定 针对特定特征允许的 GATT 流程。
名称 | 值 | 说明 |
---|---|---|
广播 |
1 | |
读取 |
2 | |
WRITE_WITHOUT_RESPONSE |
4 | |
写入 |
8 | |
通知 |
16 | |
表示 |
32 | |
AUTHENTICATED_SIGNED_WRITES |
64 | |
RELIABLE_WRITE |
256 | |
WRITABLE_AUXILIARIES |
512 |
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
INITIAL_VALUE_CHANGED_CREDITS |
10
|
uint32 |
定义的赠金金额可用于在发生以下情况时发送指示/通知: LocalService 首次发布。 |
MAX_ATTRIBUTE_COUNT |
65535
|
uint16 |
|
MAX_CHARACTERISTIC_COUNT |
32767
|
uint16 |
|
MAX_DESCRIPTOR_COUNT |
65532
|
uint16 |
|
MAX_SERVICE_COUNT |
MAX_ATTRIBUTE_COUNT
|
uint16 |
|
MAX_VALUE_LENGTH |
512
|
uint16 |