fuchsia.bluetooth.gatt2

已新增:HEAD

通訊協定

CharacteristicNotifier

定義於 fuchsia.bluetooth.gatt2/client.fidl

監聽特性通知和指示。

OnNotification

當伺服器收到特性值通知或指標時,會呼叫此方法。

  • 要求 value 更新特性的值。
  • 回應內容為空白回應應立即傳送,做為確認已收到通知 (用於流量控制) 的確認訊息。

要求

名稱類型
value ReadValue

回應

<EMPTY>

用戶端

定義於 fuchsia.bluetooth.gatt2/client.fidl

ConnectToService

使用指定的 ID 連結 RemoteService。每項服務只允許 1 個連線。

service 會在發生錯誤時關閉,並提供原因。

  • 如果 handle 無效,則傳回 ZX_ERR_INVALID_ARGS
  • 如果找不到服務,會傳回 ZX_ERR_NOT_FOUND
  • 如果服務遭移除,則會傳回 ZX_ERR_CONNECTION_RESET
  • 如果對等點中斷連線,則會傳回 ZX_ERR_NOT_CONNECTED
  • 如果已連線,則會傳回 ZX_ERR_ALREADY_EXISTS

要求

名稱類型
handle ServiceHandle
service server_end<RemoteService>

WatchServices

列舉此用戶端代表的對等互連項目。

只要在 uuids 中指定 UUID 清單,即可篩選結果。這個方法會遵循掛斷取得模式。初始要求中,系統會傳回完整的快照。後續使用相同 uuids 組合的後續呼叫只有在最近一次呼叫後回報的項目中新增、修改或移除時,才會收到回應。使用新值為 uuids 的呼叫會重設篩選器,並接收完整的快照。

帳號代碼可能會在不同服務中重複使用,因此 updatedremoved 中都有可能會包含帳號代碼。因此,建議您在更新服務前先處理已移除的服務。

若要進一步與服務互動,用戶端必須呼叫 ConnectToService() 取得 RemoteService 通訊協定。

  • 要求 uuids 加入 UUID 許可清單。如果留空,系統將傳回所有服務。
  • 回應 updated 自上次呼叫 WatchServices() 後新增或修改的服務。傳回的 ServiceInfo 資料表僅包含每項服務的基本資訊,characteristicsincludes 欄位則為空值。如果服務在上次呼叫後新增/修改後又遭到移除,該服務只會出現在 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。
  • 要求 handlenotifyindicate 參數相關聯的特性控制代碼。
  • 要求 notify 如果用戶端已啟用通知功能,則為 True,否則傳回 False。
  • 如果用戶端已啟用指標,則要求 indicate True,否則傳回 False。
  • 回覆空白傳回任何內容,無法確認特性設定。

要求

名稱類型
peer_id fuchsia.bluetooth/PeerId
handle Handle
notify bool
indicate bool

回應

<EMPTY>

OnIndicateValue

這個事件可用來傳送指標給同類應用程式。當服務「需要」更新對等互連確認時,應使用指示,而非通知。

不應傳送至尚未啟用特定特性指標的對等體,如果這類通訊已傳送,就無法傳播。藍牙堆疊會在服務的整個生命週期追蹤這項設定。

LocalServices 必須追蹤 ValueChangedCredit 方法提供的可用抵免額,並最多傳送許多 OnNotifyValueOnIndicateValue 事件。如果傳送的事件超過可用抵免額,或是參數無效,通訊協定就會關閉。

  • 要求 update 與變更特性相關聯的參數。
  • 要求 confirmation 如果所有要更新的對等裝置均確認此指標,confirmation 就會發出 ZX_EVENTPAIR_SIGNALLED 信號。如果指出任何對等互連失敗,例如對等點未設定指標、未連線,或是在 ATT 交易逾時 30 秒 (藍牙 5.3 伏特 3.3.3) 內確認,confirmation 將會關閉。如要針對個別同類群組追蹤指示確認,實作項目可在 update.peer_ids 中傳送含有單一 ID 的事件。

回應

名稱類型
update ValueChangedParameters
confirmation handle<eventpair>

OnNotifyValue

這個事件是用來傳送通知給同類應用程式。當服務「不」需要確認更新的對等互連確認時,應使用通知,而非指示。

系統不會將通知傳送給未為特定特性啟用通知功能的對等點,如果對方傳送通知,就不會傳播。藍牙堆疊會在服務生命週期內追蹤這項設定。

LocalServices 必須追蹤 ValueChangedCredit 方法提供的可用抵免額,並最多傳送許多 OnNotifyValueOnIndicateValue 事件。如果傳送的事件超過可用抵免額,或是參數無效,通訊協定就會關閉。

回應

名稱類型
payload ValueChangedParameters

OnSuppressDiscovery

此事件之後,新的對等互連將再也無法探索服務,不過已發現此服務的對等體仍可存取此服務。在每個服務生命週期內應傳送一次;重複傳送一次會關閉通訊協定,並中斷 GATT 用戶端的連線。

回應

<EMPTY>

PeerUpdate

呼叫此方法,提供與對等對象相關的 GATT 資訊。除非先前的叫用收到回應,否則系統不會呼叫 PeerUpdate。因此,如果實作項目對任何 PeerUpdate 欄位不感興趣,實作項目可直接忽略第一個叫用。

在已確認所有先前的 PeerUpdates 的情況下,將盡速傳播與 LocalService (寫入/ReadValue、CharacteristicConfiguration) 對等的任何其他互動,就先進行 PeerUpdate。

目前未傳送。在 https://fxbug.dev/42178509 中留言以尋求支援

  • 要求 peer_id。與更新相關的 PeerId。永遠顯示。
  • 要求 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 抵免額。實作者必須追蹤其可用的抵免額。實作者可針對每個功勞,只傳送一個 OnNotifyValue 或 OnIndicateValue 事件。請注意,只有在前一次呼叫後至少傳送了一項指標/通知時,系統才會呼叫 ValueChangedCredit

要求

名稱類型
additional_credit uint8

WriteValue

當同業要求寫入特性或描述元值時,會呼叫此方法。且保證對等點會符合此屬性的相關權限。

  • 要求 peer_id。發出寫入要求的 GATT 用戶端的 PeerId。永遠顯示。
  • 要求 handle 要求描述元/字元的控制代碼。永遠顯示。
  • 要求 offset 開始寫入值的位移位置。如果位移為 0,則所有現有值都應以新值覆寫。否則,應將偏移值:(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_PERMITTEDINSUFFICIENT_* 錯誤。
  • 如果伺服器傳回錯誤,系統會傳回 FAILURE

要求

名稱類型
handle Handle
options ReadOptions

回應

名稱類型
payload RemoteService_ReadCharacteristic_Result

ReadDescriptor

使用 handle 讀取特性描述元的值,然後在回覆中傳回。

  • 要求 handle 要讀取的描述元控制代碼。
  • 要求 options 適用於讀取的選項。
  • 回應 value 描述元的值。
  • 如果 handle 無效,則傳回 INVALID_HANDLE
  • 如果 options 無效,則傳回 INVALID_PARAMETERS
  • 如果伺服器拒絕讀取要求,則會傳回 READ_NOT_PERMITTEDINSUFFICIENT_* 錯誤。
  • 如果伺服器傳回錯誤,系統會傳回 FAILURE

要求

名稱類型
handle Handle
options ReadOptions

回應

名稱類型
payload RemoteService_ReadDescriptor_Result

RegisterCharacteristicNotifier

使用指定的 handle 訂閱特性的通知和指示。

系統會根據特性屬性啟用通知或指標。如果系統支援指標,則會優先採用。如果特性沒有「notify」或「indicate」屬性,則這項作業會失敗。

如果通知/指示包含用戶端特性設定描述元,系統會發出寫入要求以設定其特性。如果寫入描述元時發生錯誤,這個方法就會失敗。

成功時,notifier 通訊協定可用於接收對等點傳送通知或指示的通知。系統會自動確認偵測結果。通訊協定捨棄後,如果沒有其他本機用戶端收到通知,訂閱項目可能會終止。

  • 要求 handle 特性控點。
  • 要求 notifier 用於通知的通訊協定。
  • 如果註冊成功,系統會立即傳送空白回應。
  • 如果特徵不支援通知或指示,則會傳回 FAILURE
  • 如果 handle 無效,則傳回 INVALID_HANDLE
  • 錯誤會傳回描述元寫入錯誤的 WRITE_NOT_PERMITTEDINSUFFICIENT_*

要求

名稱類型
handle Handle
notifier CharacteristicNotifier

回應

名稱類型
payload RemoteService_RegisterCharacteristicNotifier_Result

WriteCharacteristic

使用提供的 options,使用 handlevalue 寫入特性。

我們不建議在寫入作業執行期間傳送額外的寫入作業 (伺服器可能會以任何順序接收同步寫入作業)。

  • 要求 handle 要寫入的特性。
  • 要求 value 要寫入的值。
  • 要求 options 適用於寫入的選項。
  • 系統從伺服器收到成功回應時,系統會傳送空白回應 (如果 options.with_response 為 false,則會立即傳送此回應)
  • 如果 handle 無效,則傳回 INVALID_HANDLE
  • 如果 options 無效,則傳回 INVALID_PARAMETERS
  • 如果伺服器因故拒絕寫入要求,系統會傳回 WRITE_NOT_PERMITTEDINSUFFICIENT_* 錯誤。
  • 如果伺服器傳回錯誤,系統會傳回 FAILURE

要求

名稱類型
handle Handle
value vector<uint8>[512]
options WriteOptions

回應

名稱類型
payload RemoteService_WriteCharacteristic_Result

WriteDescriptor

使用 handlevalue 寫入特性描述元。我們不建議在寫入作業執行期間傳送額外的寫入作業 (伺服器可能會以任何順序接收同步寫入作業)。

  • 要求 handle 要寫入的描述元控制代碼。
  • 要求 value 要寫入的值。
  • 要求 options 適用於寫入的選項。
  • 系統從伺服器收到成功回應時,系統會傳送空白回應 (如果 options.with_response 為 false,則會立即傳送此回應)
  • 如果 handle 無效,或參照內部保留的描述元類型 (例如用戶端特性設定描述元),則會傳回 INVALID_HANDLE 錯誤。
  • 如果 options 無效,則傳回 INVALID_PARAMETERS
  • 如果伺服器基於原因拒絕寫入,系統會傳回 WRITE_NOT_PERMITTEDINSUFFICIENT_* 錯誤。
  • 如果伺服器傳回錯誤,系統會傳回 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 中列出的特性和描述元指派不同的控制代碼。這些 ID 將用於傳送至 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>

ENUMS

錯誤:strict

類型:uint32

定義於 fuchsia.bluetooth.gatt2/types.fidl

Bluetoothtooth.gatt2.* 方法傳回的錯誤。

這些值會與藍牙 5.2 Vol. 3 Part G 表格 3.4 和藍牙核心規格 v9 Part B 表格 1.1 中的值對應,但僅供參考。用戶端不應仰賴這些值的剩餘常數。規格中省略的值會在內部處理,不會傳回給用戶端。

LocalService 方法只能傳回某些錯誤。它們會在留言中註明。

名稱說明
1

帳號代碼指定的屬性無效。可能已遭到移除。

LocalService 方法可能會傳回這個值。

2

無法讀取這個屬性。

3

無法寫入這個屬性。

4

表示從伺服器收到的回應無效。

5

這項屬性需要驗證,但用戶端尚未驗證。

7

表示讀取或寫入要求中使用的偏移值超出值邊界。

LocalService 方法可能會傳回這個值。

8

這項屬性需要授權,但客戶未獲得授權。

12

這項屬性需要以較大的加密金鑰加密的連線。

13

表示寫入要求中的值會超過目的地特性或描述元允許的上限。

LocalService 方法可能會傳回這個值。

14

發生一般錯誤,無法歸類為更具體的錯誤。

LocalService 方法可能會傳回這個值。

15

這項屬性需要加密,但連線未加密。

17

伺服器的資源不足,無法完成工作。

LocalService 方法可能會傳回這個值。

19

不允許此值。

LocalService 方法可能會傳回這個值。

128

應用程式錯誤。這些用途是在應用程式層級指定。

這些都可透過 LocalService 方法傳回。

129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
252

已拒絕設定檔或服務層級寫入要求。

253

用戶端特性設定描述元設定不正確。

254

設定檔或服務程序已在進行中。

255

設定檔或服務層級的值超出範圍。

257

一或多個 FIDL 呼叫參數無效。請參閱參數說明文件。

258

表示讀取的結果超過 FIDL 回應的數量。建議個別讀取屬性。

PublishServiceError 彈性

類型:uint32

定義於 fuchsia.bluetooth.gatt2/types.fidl

服務發布期間可能發生的錯誤。

名稱說明
1

服務控制代碼無效,或已用於發布服務的伺服器。

2

提供的服務 UUID 無效。

3

ServiceInfo.characteristics 欄位的格式無效或遺漏。如果服務應設為空白,向量應該是空白的,但會顯示任何內容。

4

發生一般錯誤,無法歸類為更具體的錯誤。

ServiceKind 嚴格

類型:uint32

定義於 fuchsia.bluetooth.gatt2/types.fidl

GATT 服務的種類 (「類型」),如 Bluetooth Core Spec v5.3 Vol. 1 Part A 6.5.1,

名稱說明
1

「提供可單獨使用的裝置功能的服務」(Ibid)

2

「提供額外功能 [...] 與主要服務相關聯,並且由至少一項主要服務納入的服務」(Ibid)

WriteMode 彈性

類型:uint32

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表支援的寫入模式,可將特性和描述元寫入伺服器。

名稱說明
1

DEFAULT 模式中,等待伺服器回應後再傳回,且不會驗證 echo 回應。同時支援特性和描述元。

2

RELIABLE 模式中,每個值 blob 都會根據伺服器的 echo 回應進行驗證。如果值 blob 未穩定傳送至對等點,系統就會取消這項程序。僅支援特性。

3

WITHOUT_RESPONSE 模式中,系統可能會在傳回前確認提交。只有具有 WRITE_WITHOUT_RESPONSE 屬性的簡短字元支援沒有回應的寫入功能。這個值必須符合單一訊息。單一訊息至少要有 20 個位元組。如果值不符,就會產生 FAILURE 錯誤。這個值會以位移 0 寫入。僅支援特性。

資料表

AttributePermissions

定義於 fuchsia.bluetooth.gatt2/types.fidl

指定特定屬性值的存取權限。

序數欄位類型說明
read SecurityRequirements

指定屬性是否擁有讀取權限。如果沒有,就無法讀取屬性值。否則,只有在滿足安全性需求表中指定的權限時,才會讀取這項資訊。

write SecurityRequirements

指定屬性是否具有寫入權限。如果沒有,就無法寫入屬性值。否則,只有在符合安全性需求表中指定的權限時,才能寫入這項資訊。

update SecurityRequirements

指定用戶端訂閱通知或特徵指示的安全性要求。系統使用 NOTIFY 和 INDICATE 特性屬性來指定通知或指標的特性。如果當地特性提供其中一個屬性,就必須提供此欄位。否則,這個欄位不得出現。

如為描述元,系統會忽略這個欄位。

特色

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表本地或遠端的 GATT 特性。

序數欄位類型說明
handle Handle

可在服務中用來識別這個特性。針對本機特性,在這項服務中,所有特性和描述元控制點的指定控制代碼不得重複。

永遠顯示。如為當地特色,這個值為必填。

type fuchsia.bluetooth/Uuid

可識別這個特性類型的 UUID。 永遠顯示。請務必提供當地特徵。

properties CharacteristicPropertyBits

特性屬性位元欄位。永遠顯示。請務必提供當地特徵。

permissions AttributePermissions

這個特性的屬性權限。如果是遠端特性,除非透過讀取和寫入要求發現權限,否則系統不會顯示這個值。

如為當地特色,這個值為必填。

descriptors vector<Descriptor>[65532]

這個特性的描述元。只在非空白的情況下顯示。此為選填欄位,用於當地特色。

描述元

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表本機或遠端的 GATT 字元描述元。

序數欄位類型說明
handle Handle

用於在服務內用於識別這個描述元。以本機描述元來說,在這項服務的所有特徵和描述元控制代碼中,指定的控制代碼不得重複。

永遠顯示。如果是本機描述元,這個值是必要項目。

type fuchsia.bluetooth/Uuid

UUID,用於識別這個描述元的類型。永遠顯示。如果是本機描述元,這個值是必要項目。

permissions AttributePermissions

這個描述元的屬性權限。如果是遠端描述元,除非透過讀取和寫入要求發現權限,否則這個值不會出現。

如果是本機描述元,這個值是必要項目。

LocalServicePeerUpdateRequest

定義於 fuchsia.bluetooth.gatt2/server.fidl

序數欄位類型說明
peer_id fuchsia.bluetooth/PeerId
mtu uint16

LocalServiceWriteValueRequest

定義於 fuchsia.bluetooth.gatt2/server.fidl

序數欄位類型說明
peer_id fuchsia.bluetooth/PeerId
handle Handle
offset uint32
value vector<uint8>[512]

LongReadOptions

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表從伺服器讀取長字元或描述元值的支援選項。長的值是指在單一訊息中可能無法容納 (超過 22 個位元組) 的值。

序數欄位類型說明
offset uint16

開始讀取時的位元組。必須小於值的長度。 選用。 預設:0

max_bytes uint16

讀取的位元組數上限。選用。 預設值:MAX_VALUE_LENGTH

ReadByTypeResult

定義於 fuchsia.bluetooth.gatt2/client.fidl

RemoteService.ReadByType 傳回的結果。

序數欄位類型說明
handle Handle

特性或描述元控點。

value ReadValue

如果成功讀取,則為特徵或描述元的值。

error Error

如果讀取值是錯誤,就無法讀取值的原因。

ReadValue

定義於 fuchsia.bluetooth.gatt2/client.fidl

圍繞伺服器接收的可能截斷值附近的包裝函式。

序數欄位類型說明
handle Handle

特性或描述元控點。永遠顯示。

value vector<uint8>[512]

特徵或描述元的值。永遠顯示。

maybe_truncated bool

如果 value 可能遭到截斷 (緩衝區已由伺服器完全填入),則為 true。ReadCharacteristicReadDescriptor 應用於讀取完整值。永遠顯示。

SecurityRequirements

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表可指派給特定存取權限的加密、驗證和授權權限。

序數欄位類型說明
encryption_required bool

如果為 true,實體連結必須經過加密才能存取這個屬性。如果沒有提供或否,這個屬性會允許未加密的存取權。

authentication_required bool

如果為 true,則實體連結必須通過驗證才能存取這個屬性。如果沒有,這個屬性會允許在未經驗證的情況下進行存取。

authorization_required bool

如果為 true,用戶端必須經過授權才能存取這個屬性。如未提供或否,這個屬性允許在未獲授權的情況下存取。

ServiceInfo

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表本機或遠端 GATT 服務。

序數欄位類型說明
handle ServiceHandle

這項 GATT 服務的專屬 ID。如果代表的是遠端服務,則一律顯示,在此情況下,該值在傳回此 ServiceInfo 的所有用戶端中都是獨一無二的。對本機服務而言為必要項目,因此在發布至單一伺服器執行個體的所有服務中,此名稱均不得重複。可在其他 PublishingService 呼叫至發布這項服務的伺服器 ServiceInfo.includes 中使用。

kind ServiceKind

表示這是主要或次要服務。一律在遠端服務中顯示。本機服務的選用項目 預設值:ServiceKind::PRIMARY

type fuchsia.bluetooth/Uuid

UUID,用於識別這項服務的類型。可能有多個服務使用同一個 UUID。 一律在遠端服務中顯示。本機服務必填。

characteristics vector<Characteristic>[32767]

這項服務的特性。 本機服務必填。切勿使用遠端服務。

includes vector<ServiceHandle>[65535]

處理此服務包含的其他服務。如果是在地生活服務,則為選填屬性。請勿用於遠端服務。TODO(https://fxbug.dev/42147529):本機服務目前不支援這項功能。

ValueChangedParameters

定義於 fuchsia.bluetooth.gatt2/server.fidl

用來指出性值從 LocalService 變更為對等點的參數。

序數欄位類型說明
handle Handle

信號的特徵值控制代碼。必填。

value vector<uint8>[512]

特徵的更新值。針對使用高處理量指標/通知的用戶端請注意 (不建議):雖然靜態限制為 MAX_VALUE_LENGTH,但實際限制仍取決於 LocalService.PeerUpdate 通知的特定對等互連設定。超過此上限的所有位元組都會遭到堆疊在內部截斷。必填。

peer_ids vector<fuchsia.bluetooth/PeerId>

只信號一部分對等裝置。如果沒有設定或空白,系統會傳送信號給所有可更新的對等裝置。如果納入,系統只會傳送信號的對等組合。 只有在已依據 LocalService. CharacteristicConfiguration 設定更新或通知的情況下,同業才會收到訊號;系統會忽略 peer_ids 中的其他同業。

WriteOptions

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表將特性/描述元值寫入伺服器的支援選項。

序數欄位類型說明
write_mode WriteMode

寫入作業的模式。如為描述元,僅支援選用 WriteMode.DEFAULT。預設值:WriteMode.DEFAULT

offset uint16

從指定的位元組開始寫入。如果 write_modeWriteMode.WITHOUT_RESPONSE,就必須缺少值或為 0。 選用。 預設:0

聯合國

LocalService_ReadValue_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/server.fidl

序數Variant類型說明
response LocalService_ReadValue_Response
err Error

LocalService_WriteValue_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/server.fidl

序數Variant類型說明
response LocalService_WriteValue_Response
err Error

ReadOptions 彈性

定義於 fuchsia.bluetooth.gatt2/types.fidl

代表從伺服器讀取特性或描述元值的支援選項。

序數Variant類型說明
short_read ShortReadOptions

執行簡短讀取,該讀取可能會遭到截斷 (如結果中的 Maybe_truncated) 在 GATT 服務中,大多數讀取作業都是簡短的讀取 (<= 22 個位元組)。

long_read LongReadOptions

如果有,請使用指定的選項執行較長的讀取作業。選用。 預設:系統會執行簡短讀取。

RemoteService_ReadByType_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_ReadByType_Response
err Error

RemoteService_ReadCharacteristic_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_ReadCharacteristic_Response
err Error

RemoteService_ReadDescriptor_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_ReadDescriptor_Response
err Error

RemoteService_RegisterCharacteristicNotifier_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_RegisterCharacteristicNotifier_Response
err Error

RemoteService_WriteCharacteristic_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_WriteCharacteristic_Response
err Error

RemoteService_WriteDescriptor_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/client.fidl

序數Variant類型說明
response RemoteService_WriteDescriptor_Response
err Error

Server_PublishService_Result 嚴格

定義於 fuchsia.bluetooth.gatt2/server.fidl

序數Variant類型說明
response Server_PublishService_Response
err PublishServiceError

帳單

CharacteristicPropertyBits 嚴格

類型:uint16

定義於 fuchsia.bluetooth.gatt2/types.fidl

特性屬性位元欄位可能的值。這些指令會指定特定特性允許的 GATT 程序。

名稱說明
1
2
4
8
16
32
64
256
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