协议
CharacteristicNotifier
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
听取特征通知和指示。
OnNotification
从服务器收到特征值通知或指示时调用。
- 向
value
请求更新后的特征的值。
- 响应:您应立即发送一个空响应,确认已收到通知(适用于流控制)。
请求
名称 | 类型 |
---|---|
value |
ReadValue
|
响应
<EMPTY>
客户端
在 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
。 - error 如果服务已连接,则返回
ZX_ERR_ALREADY_EXISTS
。
请求
名称 | 类型 |
---|---|
handle |
ServiceHandle
|
service |
server_end<RemoteService>
|
WatchServices
枚举在此客户端所代表的对等体上发现的服务。
您可以通过在 uuids
中指定 UUID 列表来过滤结果。此方法遵循挂起的 get 模式。初始请求时,系统将返回完整的快照。仅当自上次调用以来报告的条目中添加、修改或移除一项或多项服务时,对同一组 uuids
的后续调用才会收到响应。使用新值 uuids
的调用将重置过滤条件并收到完整的快照。
句柄可以在各项服务之间重复使用,因此句柄可以同时位于 updated
和 removed
中。因此,我们建议先处理已移除的服务,然后再更新服务。
为了进一步与服务交互,客户端必须通过调用 ConnectToService() 获取 RemoteService 协议。
- 向
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
。否则,返回 false。 - 如果客户端已启用指示,则请求
indicate
;否则,返回 false。
- response empty 不返回任何值以确认特征配置。
请求
名称 | 类型 |
---|---|
peer_id |
fuchsia.bluetooth/PeerId
|
handle |
Handle
|
notify |
bool
|
indicate |
bool
|
响应
<EMPTY>
OnIndicateValue
此事件用于向对等方发送指示。如果服务确实需要对等方确认更新,则应使用指示而非通知。
不应将指示发送给没有针对特定特征启用指示的对等设备 - 如果发送指示,则不会传播指示。蓝牙堆栈将在服务的生命周期内跟踪此配置。
LocalServices 必须跟踪 ValueChangedCredit
方法提供的可用功劳,并发送最多数量的 OnNotifyValue
和 OnIndicateValue
事件。如果发送的事件数超过可用的赠金,或者参数无效,协议将关闭。
- 请求
update
:与已更改的特征相关联的参数。 - 请求
confirmation
当要更新的所有对等方都确认了指示后,系统会向confirmation
发出 ZX_EVENTPAIR_SIGNALLED 信号。如果表明任何对等设备失败,例如对等方尚未配置指示、未连接或未在 30 秒的 ATT 事务超时时限内确认(蓝牙 5.3 第 3 卷第 F 3.3.3 部分),confirmation
将关闭。如需按对等方跟踪指示确认,该实现可以在update.peer_ids
中发送此事件,并在其中包含单个 ID。
响应
名称 | 类型 |
---|---|
update |
ValueChangedParameters
|
confirmation |
handle<eventpair>
|
OnNotifyValue
此事件用于向对等设备发送通知。当服务不需要对更新进行对等方确认时,应使用通知,而非指示。
不应将通知发送给没有针对特定特征启用通知的对等方 - 即使发送通知,通知也不会传播。蓝牙堆栈将在服务的生命周期内跟踪此配置。
LocalServices 必须跟踪 ValueChangedCredit
方法提供的可用功劳,并发送最多数量的 OnNotifyValue
和 OnIndicateValue
事件。如果发送的事件数超过可用的赠金,或者参数无效,协议将关闭。
响应
名称 | 类型 |
---|---|
payload |
ValueChangedParameters
|
OnSuppressDiscovery
此事件之后,新的对等设备将无法再发现该服务,但已经发现该服务的对等设备可能仍然可以访问该服务。应在每个服务生命周期内发送一次该信号;多次发送将关闭协议并断开 GATT 客户端的连接。
响应
<EMPTY>
PeerUpdate
进行调用以提供特定于对等方的 GATT 信息。除非先前的调用收到响应,否则不会调用 PeerUpdate。因此,如果实现对任何 PeerUpdate 字段不感兴趣,只需忽略第一次调用即可。
在将任何其他互动从对等方传播到 LocalService(Write/ReadValue、CharacteristicConfiguration)之前,系统会尽可能进行 PeerUpdate,前提是所有之前的所有 PeerUpdate 都得到确认。
目前发送失败。请在 https://fxbug.dev/42178509 上发表评论以请求支持
- 请求
peer_id
:与更新相关的 PeerId。始终存在。 - request
mtu
:此对等方的通知/指示所适合的最大字节数。超出此限制的所有字节均会被以静默方式截断。大多数客户端无需担心这一点,除非他们使用通知/指示来获得高吞吐量。可选。
- 响应:用于确认已收到更新的空响应。
请求
名称 | 类型 |
---|---|
payload |
LocalServicePeerUpdateRequest
|
响应
<EMPTY>
ReadValue
在对等方请求读取特征或描述符的值时调用。可保证该对等方满足与此属性相关联的权限。
- 请求
peer_id
:发出读取请求的 GATT 客户端的 PeerId。 - 请求
handle
请求的描述符/特征的句柄。 - 请求
offset
:开始读取请求值的偏移量。
- 响应
value
特征的值。
- 错误 有关可能的错误,请参阅
gatt2.Error
文档。
请求
名称 | 类型 |
---|---|
peer_id |
fuchsia.bluetooth/PeerId
|
handle |
Handle
|
offset |
int32
|
响应
名称 | 类型 |
---|---|
payload |
LocalService_ReadValue_Result
|
ValueChangedCredit
为发送指示/通知的功劳充值。实现人员被定义为在调用此方法之前首先提供 INITIAL_VALUE_CHANGED_CREDITS 赠金。实现人员必须跟踪他们拥有的可用功劳。实现人员可以为每笔功劳仅发送一个 OnNotificationsValue 或 OnIndicateValue 事件。请注意,只有在上次调用后至少发送了一条指示/通知时,系统才会调用 ValueChangedCredit
。
请求
名称 | 类型 |
---|---|
additional_credit |
uint8
|
WriteValue
在对等方发出写入特征或描述符值的请求时调用。可以保证该对等方满足与此属性相关联的权限。
- 请求
peer_id
:发出写入请求的 GATT 客户端的 PeerId。始终存在。 - 请求
handle
请求的描述符/特征的句柄。始终存在。 - request
offset
:开始写入值的偏移量。如果偏移量为 0,则任何现有值都应被新值覆盖。否则,应将 offset:(offset + len(value)) 中的现有值更改为value
。始终存在。 - 请求
value
:描述符/特征的新值。始终存在,但可能是空字符串。
- 响应 值作为确认更新后,实现必须发送一个空响应。
- 错误 有关可能的错误,请参阅
gatt2.Error
文档。
请求
名称 | 类型 |
---|---|
payload |
LocalServiceWriteValueRequest
|
响应
名称 | 类型 |
---|---|
payload |
LocalService_WriteValue_Result
|
RemoteService
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
DiscoverCharacteristics
返回属于此服务的特征和特征描述符。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
characteristics |
vector<Characteristic>[32767]
|
ReadByType
读取具有给定 uuid
的特性和描述符。
此方法有助于在发现完成之前读取值,从而缩短延迟时间。
- 请求
uuid
要读取的特征/描述符的 UUID。
- 响应
results
读取结果。如果未读取任何匹配值,则此字段可能为空。如果读取某个值导致权限错误,相应句柄和错误也会包含在内。
- 如果
uuid
引用内部保留的描述符类型(例如客户端特征配置描述符),则返回INVALID_PARAMETERS
。 - 如果读取的结果数超过 FIDL 响应可以容纳的数量,则返回
TOO_MANY_RESULTS
。考虑在执行发现后单独读取特征/描述符。 - 如果服务器返回并非针对单一结果的错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
uuid |
fuchsia.bluetooth/Uuid
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadByType_Result
|
ReadCharacteristic
读取具有指定 handle
的特征的值。
- 请求
handle
要读取的特征句柄。 - 请求
options
适用于读取的选项。
- 响应
value
特征的值。
- 如果
handle
无效,则返回INVALID_HANDLE
。 - 如果
options
无效,则返回INVALID_PARAMETERS
。 - 如果服务器拒绝读取请求,则错误会返回
READ_NOT_PERMITTED
或INSUFFICIENT_*
。 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadCharacteristic_Result
|
ReadDescriptor
使用 handle
读取特征描述符的值,并在回复中返回该值。
- 请求
handle
要读取的描述符句柄。 - 请求
options
适用于读取的选项。
- 响应
value
描述符的值。
- 如果
handle
无效,则返回INVALID_HANDLE
。 - 如果
options
无效,则返回INVALID_PARAMETERS
。 - 如果服务器拒绝读取请求,则错误会返回
READ_NOT_PERMITTED
或INSUFFICIENT_*
。 - error 如果服务器返回错误,则返回
FAILURE
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_ReadDescriptor_Result
|
RegisterCharacteristicNotifier
订阅具有给定 handle
的特征的通知和指示。
通知或指示将根据特征属性启用。如果支持指示,将首选指示。如果特征没有“notify”或“suggest”属性,此操作就会失败。
如果其中包含客户端特征配置描述符,系统会发出写入请求来配置通知/指示的特征。如果在写入描述符时出错,此方法将失败。
成功后,notifier
协议可用于在对等方发送通知或指示时收到通知。系统会自动确认指示。丢弃该协议后,如果没有其他本地客户端收到通知,订阅可能会终止。
- 向
handle
请求特征句柄。 - 请求
notifier
用于通知的协议。
- 响应 如果注册成功,系统将立即发送一个空响应。
- 错误:如果特征不支持通知或指示,则返回
FAILURE
。 - error 如果
handle
无效,则返回INVALID_HANDLE
。 - Error 针对描述符写入错误返回
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
。
请求
名称 | 类型 |
---|---|
handle |
Handle
|
notifier |
CharacteristicNotifier
|
响应
名称 | 类型 |
---|---|
payload |
RemoteService_RegisterCharacteristicNotifier_Result
|
WriteCharacteristic
使用提供的 options
将 value
写入具有 handle
的特征。
建议不要在写入正在进行时发送其他写入(服务器可能会以任何顺序同时接收写入)。
- 请求
handle
:要写入的特征。 - 请求
value
要写入的值。 - 请求
options
适用于写入的选项。
- 响应:从服务器收到成功响应时,系统会发送一个空响应(如果
options.with_response
为 false,则立即发送)
- 如果
handle
无效,则返回INVALID_HANDLE
。 - 如果
options
无效,则返回INVALID_PARAMETERS
。 - 如果服务器拒绝写入请求并给出了原因,错误会返回
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,则立即发送)
- 如果
handle
无效或引用了内部预留的描述符类型(例如客户端特征配置描述符),则返回INVALID_HANDLE
。 - 如果
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
的请求中。
- 请求
info
定义 GATT 服务的结构。包括将提供给对等方的特征和描述符,以及服务句柄(这在发布到此服务器的所有服务中必须是唯一的)。 - 请求
service
根据LocalService
的已载述行为提供服务实现。
- 响应 空响应表示服务已成功发布。
- 错误 请参阅
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 中定义
<EMPTY>
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 中定义
<EMPTY>
RemoteService_WriteCharacteristic_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
<EMPTY>
RemoteService_WriteDescriptor_Response
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
<EMPTY>
Server_PublishService_Response
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
<EMPTY>
ServiceHandle
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
value |
uint64
|
无默认取景方式 |
ShortReadOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于从服务器读取简短特征或描述符值的选项。短值是指适合单个消息的值,至少为 22 个字节。目前这是一个空占位符,因为没有选项。
<EMPTY>
枚举
错误严格
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
bluetooth.gatt2.* 方法返回的错误。
这些值与蓝牙 5.2 第 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 中定义
蓝牙核心规范 v5.3 第 1 部分 A 部分 6.5.1 中所概述的 GATT 服务的类型(“类型”)。
名称 | 值 | 说明 |
---|---|---|
主电子邮件 |
1 |
“提供可单独使用的设备功能的服务”(同上) |
辅助电子邮件 |
2 |
“提供与主要服务相关的额外功能 [...] 的服务,并且至少包含在一项主要服务中”(Ibid) |
WriteMode 灵活
类型:uint32
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示支持的写入模式,用于将特性和描述符写入服务器。
名称 | 值 | 说明 |
---|---|---|
默认 |
1 |
在 |
可靠 |
2 |
在 |
WITHOUT_RESPONSE |
3 |
在 |
表
AttributePermissions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
指定对特定属性值的访问权限。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
read |
SecurityRequirements
|
指定某个属性是否具有读取权限。如果没有,则无法读取属性值。否则,只有在满足 SecurityRequirements 表中指定的权限时才能读取。 |
2 |
write |
SecurityRequirements
|
指定某个属性是否具有写入权限。如果没有,则无法写入属性值。否则,只有当满足 SecurityRequirements 表中指定的权限时才能写入该分区。 |
3 |
update |
SecurityRequirements
|
指定客户端订阅某个特征的通知或指示的安全要求。特征对通知或指示标志的支持是使用 NOTIFY 和 INDICATE 特征属性指定的。如果局部特征具有这些属性之一,则必须提供此字段。否则,此字段不得存在。 对于“描述符”,此字段会被忽略。 |
特征
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示本地或远程 GATT 特征。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
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 特征描述符。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
相应描述符在服务中的唯一标识符。对于本地描述符,指定的句柄在此服务中的所有特征和描述符句柄中必须是唯一的。 始终存在。对于本地描述符,此值是必需的。 |
2 |
type |
fuchsia.bluetooth/Uuid
|
用于标识此描述符类型的 UUID。始终存在。对于本地描述符,此值是必需的。 |
3 |
permissions |
AttributePermissions
|
此描述符的属性权限。对于远程描述符,在通过读取和写入请求发现权限之前,系统不会显示此值。 对于本地描述符,此值是必需的。 |
LocalServicePeerUpdateRequest
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
peer_id |
fuchsia.bluetooth/PeerId
|
|
2 |
mtu |
uint16
|
LocalServiceWriteValueRequest
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
peer_id |
fuchsia.bluetooth/PeerId
|
|
2 |
handle |
Handle
|
|
3 |
offset |
uint32
|
|
4 |
value |
vector<uint8>[512]
|
LongReadOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示从服务器读取长整型特征或描述符值支持的选项。长值是指不适合放进单个消息的值(超过 22 个字节)。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
offset |
uint16
|
开始读取的字节。必须小于值的长度。 可选。 默认值:0 |
2 |
max_bytes |
uint16
|
要读取的字节数上限。
可选。
默认值: |
ReadByTypeResult
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
RemoteService.ReadByType
返回的结果。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
特征或描述符句柄。 |
2 |
value |
ReadValue
|
特征或描述符的值(如果读取成功)。 |
3 |
error |
Error
|
无法读取值的原因(如果读取该值会导致错误)。 |
ReadValue
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
用于封装从服务器收到的可能被截断的值。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
特征或描述符句柄。始终存在。 |
2 |
value |
vector<uint8>[512]
|
特征或描述符的值。始终存在。 |
3 |
maybe_truncated |
bool
|
如果 |
SecurityRequirements
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示可分配给特定访问权限的加密、身份验证和授权权限。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
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 服务。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
ServiceHandle
|
此 GATT 服务的唯一标识符。
如果它表示远程服务,则始终存在;在这种情况下,该值在返回此 ServiceInfo 的客户端中具有唯一性。本地服务是必需的,在这种情况下,发布到单个服务器实例的所有服务中必须有唯一 ID。可在对发布此服务的服务器的其他 PublishService 调用的 |
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 更改为对等的参数。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
handle |
Handle
|
有信号的特征值的句柄。 必填。 |
2 |
value |
vector<uint8>[512]
|
更新后的特征值。
对于使用高吞吐量指示/通知的客户端(不推荐),请注意以下事项:虽然静态限制为 |
3 |
peer_ids |
vector<fuchsia.bluetooth/PeerId>
|
仅向部分对等方发送信号。
如果不存在或为空,则向所有可更新的对等方发出信号。如果包含,系统将仅向此列表中的一组对等设备发出信号。
仅当对等方已根据 |
WriteOptions
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示支持的选项,用于将特征/描述符值写入服务器。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
write_mode |
WriteMode
|
写入操作的模式。对于描述符,仅支持 WriteMode.DEFAULT(可选)。默认值:WriteMode.DEFAULT |
2 |
offset |
uint16
|
请求从指示的字节开始的写入。
如果 |
联合
LocalService_ReadValue_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LocalService_ReadValue_Response
|
|
2 |
err |
Error
|
LocalService_WriteValue_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LocalService_WriteValue_Response
|
|
2 |
err |
Error
|
ReadOptions 灵活
在 fuchsia.bluetooth.gatt2/types.fidl 中定义
表示用于从服务器读取特征或描述符值支持的选项。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
short_read |
ShortReadOptions
|
执行简短的读取,该操作可能会被截断(如结果中的 Maybe_truncated 所示)。GATT 服务中的大多数读取都是短读取(<= 22 字节)。 |
2 |
long_read |
LongReadOptions
|
如果存在,请使用指定的选项执行长时间读取。 可选。 默认:将执行简短的读取操作。 |
RemoteService_ReadByType_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadByType_Response
|
|
2 |
err |
Error
|
RemoteService_ReadCharacteristic_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_ReadDescriptor_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_ReadDescriptor_Response
|
|
2 |
err |
Error
|
RemoteService_RegisterCharacteristicNotifier_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_RegisterCharacteristicNotifier_Response
|
|
2 |
err |
Error
|
RemoteService_WriteCharacteristic_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_WriteCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_WriteDescriptor_Result 严格
在 fuchsia.bluetooth.gatt2/client.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RemoteService_WriteDescriptor_Response
|
|
2 |
err |
Error
|
Server_PublishService_Result 严格
在 fuchsia.bluetooth.gatt2/server.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Server_PublishService_Response
|
|
2 |
err |
PublishServiceError
|
BITS
CharacteristicPropertyBits 严格
类型: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 |