通訊協定
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
的呼叫會重設篩選器,並接收完整的快照。
帳號代碼可能會在不同服務中重複使用,因此 updated
和 removed
中都有可能會包含帳號代碼。因此,建議您在更新服務前先處理已移除的服務。
若要進一步與服務互動,用戶端必須呼叫 ConnectToService() 取得 RemoteService 通訊協定。
- 要求
uuids
加入 UUID 許可清單。如果留空,系統將傳回所有服務。
- 回應
updated
自上次呼叫 WatchServices() 後新增或修改的服務。傳回的 ServiceInfo 資料表僅包含每項服務的基本資訊,characteristics
和includes
欄位則為空值。如果服務在上次呼叫後新增/修改後又遭到移除,該服務只會出現在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。
- 回覆空白傳回任何內容,無法確認特性設定。
要求
名稱 | 類型 |
---|---|
peer_id |
fuchsia.bluetooth/PeerId
|
handle |
Handle
|
notify |
bool
|
indicate |
bool
|
回應
<EMPTY>
OnIndicateValue
這個事件可用來傳送指標給同類應用程式。當服務「需要」更新對等互連確認時,應使用指示,而非通知。
不應傳送至尚未啟用特定特性指標的對等體,如果這類通訊已傳送,就無法傳播。藍牙堆疊會在服務的整個生命週期追蹤這項設定。
LocalServices 必須追蹤 ValueChangedCredit
方法提供的可用抵免額,並最多傳送許多 OnNotifyValue
和 OnIndicateValue
事件。如果傳送的事件超過可用抵免額,或是參數無效,通訊協定就會關閉。
- 要求
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
方法提供的可用抵免額,並最多傳送許多 OnNotifyValue
和 OnIndicateValue
事件。如果傳送的事件超過可用抵免額,或是參數無效,通訊協定就會關閉。
回應
名稱 | 類型 |
---|---|
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_PERMITTED
或INSUFFICIENT_*
錯誤。 - 如果伺服器傳回錯誤,系統會傳回
FAILURE
。
要求
名稱 | 類型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
回應
名稱 | 類型 |
---|---|
payload |
RemoteService_ReadCharacteristic_Result
|
ReadDescriptor
使用 handle
讀取特性描述元的值,然後在回覆中傳回。
- 要求
handle
要讀取的描述元控制代碼。 - 要求
options
適用於讀取的選項。
- 回應
value
描述元的值。
- 如果
handle
無效,則傳回INVALID_HANDLE
。 - 如果
options
無效,則傳回INVALID_PARAMETERS
。 - 如果伺服器拒絕讀取要求,則會傳回
READ_NOT_PERMITTED
或INSUFFICIENT_*
錯誤。 - 如果伺服器傳回錯誤,系統會傳回
FAILURE
。
要求
名稱 | 類型 |
---|---|
handle |
Handle
|
options |
ReadOptions
|
回應
名稱 | 類型 |
---|---|
payload |
RemoteService_ReadDescriptor_Result
|
RegisterCharacteristicNotifier
使用指定的 handle
訂閱特性的通知和指示。
系統會根據特性屬性啟用通知或指標。如果系統支援指標,則會優先採用。如果特性沒有「notify」或「indicate」屬性,則這項作業會失敗。
如果通知/指示包含用戶端特性設定描述元,系統會發出寫入要求以設定其特性。如果寫入描述元時發生錯誤,這個方法就會失敗。
成功時,notifier
通訊協定可用於接收對等點傳送通知或指示的通知。系統會自動確認偵測結果。通訊協定捨棄後,如果沒有其他本機用戶端收到通知,訂閱項目可能會終止。
- 要求
handle
特性控點。 - 要求
notifier
用於通知的通訊協定。
- 如果註冊成功,系統會立即傳送空白回應。
- 如果特徵不支援通知或指示,則會傳回
FAILURE
。 - 如果
handle
無效,則傳回INVALID_HANDLE
。 - 錯誤會傳回描述元寫入錯誤的
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
。
要求
名稱 | 類型 |
---|---|
handle |
Handle
|
notifier |
CharacteristicNotifier
|
回應
名稱 | 類型 |
---|---|
payload |
RemoteService_RegisterCharacteristicNotifier_Result
|
WriteCharacteristic
使用提供的 options
,使用 handle
將 value
寫入特性。
我們不建議在寫入作業執行期間傳送額外的寫入作業 (伺服器可能會以任何順序接收同步寫入作業)。
- 要求
handle
要寫入的特性。 - 要求
value
要寫入的值。 - 要求
options
適用於寫入的選項。
- 系統從伺服器收到成功回應時,系統會傳送空白回應 (如果
options.with_response
為 false,則會立即傳送此回應)
- 如果
handle
無效,則傳回INVALID_HANDLE
。 - 如果
options
無效,則傳回INVALID_PARAMETERS
。 - 如果伺服器因故拒絕寫入要求,系統會傳回
WRITE_NOT_PERMITTED
或INSUFFICIENT_*
錯誤。 - 如果伺服器傳回錯誤,系統會傳回
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_*
錯誤。 - 如果伺服器傳回錯誤,系統會傳回
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 方法只能傳回某些錯誤。它們會在留言中註明。
名稱 | 值 | 說明 |
---|---|---|
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 服務的種類 (「類型」),如 Bluetooth Core Spec v5.3 Vol. 1 Part A 6.5.1,
名稱 | 值 | 說明 |
---|---|---|
主要 |
1 |
「提供可單獨使用的裝置功能的服務」(Ibid) |
次要 |
2 |
「提供額外功能 [...] 與主要服務相關聯,並且由至少一項主要服務納入的服務」(Ibid) |
WriteMode 彈性
類型:uint32
定義於 fuchsia.bluetooth.gatt2/types.fidl
代表支援的寫入模式,可將特性和描述元寫入伺服器。
名稱 | 值 | 說明 |
---|---|---|
預設 |
1 |
在 |
RELIABLE |
2 |
在 |
WITHOUT_RESPONSE |
3 |
在 |
資料表
AttributePermissions
定義於 fuchsia.bluetooth.gatt2/types.fidl
指定特定屬性值的存取權限。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
read |
SecurityRequirements
|
指定屬性是否擁有讀取權限。如果沒有,就無法讀取屬性值。否則,只有在滿足安全性需求表中指定的權限時,才會讀取這項資訊。 |
2 |
write |
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]
|
這個特性的描述元。只在非空白的情況下顯示。此為選填欄位,用於當地特色。 |
描述元
定義於 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,實體連結必須經過加密才能存取這個屬性。如果沒有提供或否,這個屬性會允許未加密的存取權。 |
2 |
authentication_required |
bool
|
如果為 true,則實體連結必須通過驗證才能存取這個屬性。如果沒有,這個屬性會允許在未經驗證的情況下進行存取。 |
3 |
authorization_required |
bool
|
如果為 true,用戶端必須經過授權才能存取這個屬性。如未提供或否,這個屬性允許在未獲授權的情況下存取。 |
ServiceInfo
定義於 fuchsia.bluetooth.gatt2/types.fidl
代表本機或遠端 GATT 服務。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
handle |
ServiceHandle
|
這項 GATT 服務的專屬 ID。如果代表的是遠端服務,則一律顯示,在此情況下,該值在傳回此 ServiceInfo 的所有用戶端中都是獨一無二的。對本機服務而言為必要項目,因此在發布至單一伺服器執行個體的所有服務中,此名稱均不得重複。可在其他 PublishingService 呼叫至發布這項服務的伺服器 |
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
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
LocalService_ReadValue_Response
|
|
2 |
err |
Error
|
LocalService_WriteValue_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/server.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
LocalService_WriteValue_Response
|
|
2 |
err |
Error
|
ReadOptions 彈性
定義於 fuchsia.bluetooth.gatt2/types.fidl
代表從伺服器讀取特性或描述元值的支援選項。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
short_read |
ShortReadOptions
|
執行簡短讀取,該讀取可能會遭到截斷 (如結果中的 Maybe_truncated) 在 GATT 服務中,大多數讀取作業都是簡短的讀取 (<= 22 個位元組)。 |
2 |
long_read |
LongReadOptions
|
如果有,請使用指定的選項執行較長的讀取作業。選用。 預設:系統會執行簡短讀取。 |
RemoteService_ReadByType_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_ReadByType_Response
|
|
2 |
err |
Error
|
RemoteService_ReadCharacteristic_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_ReadCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_ReadDescriptor_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_ReadDescriptor_Response
|
|
2 |
err |
Error
|
RemoteService_RegisterCharacteristicNotifier_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_RegisterCharacteristicNotifier_Response
|
|
2 |
err |
Error
|
RemoteService_WriteCharacteristic_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_WriteCharacteristic_Response
|
|
2 |
err |
Error
|
RemoteService_WriteDescriptor_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RemoteService_WriteDescriptor_Response
|
|
2 |
err |
Error
|
Server_PublishService_Result 嚴格
定義於 fuchsia.bluetooth.gatt2/server.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Server_PublishService_Response
|
|
2 |
err |
PublishServiceError
|
帳單
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 |