fuchsia.lowpan.device

新增日期:7

通訊協定

計數器

定義於 fuchsia.lowpan.device/counters.fidl

取得

傳回計數器的快照,而不會重設計數器。

要求

<EMPTY>

回應

名稱類型
counters AllCounters

重設

將所有計數器重設為零,立即傳回計數器值。

要求

<EMPTY>

回應

名稱類型
counters AllCounters

CountersConnector

定義於 fuchsia.lowpan.device/counters.fidl

連線至 LoWPAN 介面上計數器的通訊協定。

連線

連線至名為 LoWPAN 介面上的 DeviceCounters 通訊協定。

您可以呼叫 [`fuchsia.lowpan/Lookup.GetDevices] 來瞭解介面名稱。

如果處理這項要求時發生錯誤,指定的管道就會關閉,並用專題代碼說明失敗原因:

  • ZX_ERR_INVALID_ARGUMENT:指定介面名稱的格式有誤或無效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名稱的介面。
  • ZX_ERR_NOT_SUPPORTED:介面存在,但不支援這個通訊協定。

要求

名稱類型
name fuchsia.lowpan/InterfaceName
server_end server_end<Counters>

裝置

定義於 fuchsia.lowpan.device/device.fidl

LoWPAN 裝置通訊協定。

此通訊協定提供用戶端控制及監控裝置的方法。

請注意,對於處理 PII 的裝置來說,您必須透過 DeviceExtra 通訊協定監控及控管。

GetSupportedNetworkTypes

傳回此介面支援的網路類型。

LoWPAN 裝置通常僅支援單一網路類型,但部分裝置可能支援多種網路類型。最多可能傳回 MAX_NETWORK_TYPES 種網路類型。

要求

<EMPTY>

回應

名稱類型
network_types vector<string>[16]

LeaveNetwork

關閉網路介面,然後清除目前網路的所有非可變動詳細資料。

完成後,系統會清除目前網路的所有非揮發性與暫時狀態,介面也會離線。

具體來說,呼叫這個方法將產生下列可觀察效果:

  • DeviceState.connectivity_state 會轉換為 State::OFFLINE (假設其未處於該狀態)。
  • DeviceExtra::WatchIdentity 會發出空的 Identity (假設並非空)。

如果先前並未佈建介面,呼叫此方法就不會有任何作用。

要求

<EMPTY>

回應

<EMPTY>

ProvisionNetwork

為身分和憑證描述的網路佈建介面。這與 JoinNetwork 類似,差別在於 (假設身分和憑證皆有效),即使附近沒有對等點,其身分和憑證仍將一律成功。

必須指定下列 ProvisioningParams 欄位:

  • identity.raw_name
  • identity.xpanid
  • identity.panid
  • identity.channel_index
  • credential

如果未指定任何必填欄位,管道就會以基元 ZX_ERR_INVALID_ARGUMENT 關閉。

此外,如果存在 identity.net_type 欄位,且與此裝置支援的網路類型不相符,則管道也會以 Epitaph ZX_ERR_NOT_SUPPORTED 關閉。

裝置成功重新設定後,這個方法就會傳回。您可以透過 WatchDeviceState() 監控最終的狀態變更。任何導致作業無法順利完成的錯誤都會導致通訊協定關閉。

要求

名稱類型
params ProvisioningParams

回應

<EMPTY>

SetActive

啟用 (「升起」) 或停用 (「關閉」) 網路介面。

請注意,僅將此值設為 true,不代表網路介面一定會上線且可供使用。詳情請參閱 DeviceState 表格的 connectivity_state 欄位。

這個方法會在作業順利完成後傳回。 您可以透過 WatchDeviceState() 監控最終的狀態變更。任何導致作業無法順利完成的錯誤都會導致通訊協定關閉。

要求

名稱類型
active bool

回應

<EMPTY>

WatchDeviceState

觀察 DeviceState 的變更。

第一次呼叫一律會傳回目前狀態的快照。後續呼叫會遭到封鎖,直到狀態變更為止,並傳回裝置內部狀態差異。

變更未排入佇列。即使在呼叫之間發生多次變更,傳回的值一律會代表最新且最準確的狀態值。

要求

<EMPTY>

回應

名稱類型
device_combined_state DeviceState

DeviceConnector

定義於 fuchsia.lowpan.device/device.fidl

用於 LoWPAN 介面上 Device 的通訊協定。

連線

連線至名為 LoWPAN 介面上的「Device」通訊協定。

您可以呼叫 fuchsia.lowpan/Lookup.GetDevices() 來瞭解介面名稱。

如果處理這項要求時發生錯誤,指定的管道就會關閉,並用專題代碼說明失敗原因:

  • ZX_ERR_INVALID_ARGUMENT:指定介面名稱的格式有誤或無效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名稱的介面。
  • ZX_ERR_NOT_SUPPORTED:介面存在,但不支援這個通訊協定。

要求

名稱類型
name fuchsia.lowpan/InterfaceName
server_end server_end<Device>

DeviceExtra

定義於 fuchsia.lowpan.device/device.fidl

LoWPAN 裝置「Extra」通訊協定。

此通訊協定可為用戶端提供控制及監控 LoWPAN 裝置的某些面向,無論是直接或間接外洩 PII 或加密編譯金鑰,都能受到控管。

GetCredential

擷取目前的憑證。

傳回的憑證起源於先前對 ProvisionNetworkJoinNetworkFormNetwork 的呼叫。如果裝置尚未佈建 (例如透過呼叫 LeaveNetwork()),這個方法就不會傳回任何內容。

要求

<EMPTY>

回應

名稱類型
credential Credential?

GetCurrentMacAddress

傳回這部裝置目前使用的 MAC 位址 (可能與靜態工廠指派的 MAC 位址不同)。

這個位址通常是靜態的,但當裝置重新連結至其他網路或執行恢復原廠設定時,位址可能會變更。

新增日期:9

要求

<EMPTY>

回應

名稱類型
address fuchsia.lowpan/MacAddress

WatchIdentity

觀察目前網路身分的變更。

第一次呼叫一律會傳回目前身分的快照。在身分變更之前,後續呼叫會遭到封鎖,直到身分變更完成後,才會傳回整個更新後的身分。

如果裝置目前沒有相關聯的身分,則傳回的身分會是空白。

變更未排入佇列。即使在呼叫之間發生多次變更,傳回的身分一律會代表最新且最準確的值。

請注意,變更「並非」遞增:每次變更時,系統都會傳回目前的 LoWPAN 身分。

身分值可透過下列任一呼叫變更:

  • Device.ProvisionNetwork()
  • Device.LeaveNetwork()
  • DeviceExtra.JoinNetwork()
  • DeviceExtra.FormNetwork()

要求

<EMPTY>

回應

名稱類型
identity Identity

DeviceExtraConnector

定義於 fuchsia.lowpan.device/device.fidl

用來連線至 LoWPAN 介面 DeviceExtra 的通訊協定。

連線

連線至名為 LoWPAN 介面上的 DeviceExtra 通訊協定。

您可以呼叫 fuchsia.lowpan/Lookup.GetDevices 來瞭解介面名稱。

如果處理這項要求時發生錯誤,指定的管道就會關閉,並用專題代碼說明失敗原因:

  • ZX_ERR_INVALID_ARGUMENT:指定介面名稱的格式有誤或無效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名稱的介面。
  • ZX_ERR_NOT_SUPPORTED:介面存在,但不支援這個通訊協定。

要求

名稱類型
name fuchsia.lowpan/InterfaceName
server_end server_end<DeviceExtra>

EnergyScan

定義於 fuchsia.lowpan.device/energy_scanner.fidl

StartEnergyScan

啟動能源掃描作業。

這可用於調查頻譜,找出應避免的管道。

您可以藉由關閉串流通訊協定來取消掃描作業。

如果在進行另一項掃描作業時才開始掃描,則可讓先前的掃描作業執行到新的掃描作業,並開始傳回結果。

所有掃描作業應在 LoWPAN 裝置執行期間完全佔用記憶體,防止其他作業在掃描作業完成前完成。此外,在掃描過程中,所有網路封包也應該被捨棄。

執行能源掃描可剖析特定位置的光譜能量,藉此判斷或修正概略的位置資訊。

要求

名稱類型
params EnergyScanParameters
stream server_end<EnergyScanResultStream>

EnergyScanConnector

定義於 fuchsia.lowpan.device/energy_scanner.fidl

用於在 LoWPAN 介面上連線至 EnergyScan 的通訊協定。

連線

連結到名為 LoWPAN 介面的 EnergyScan 通訊協定。

您可以呼叫 fuchsia.lowpan/Lookup.GetDevices 來瞭解介面名稱。

如果處理這項要求時發生錯誤,指定的管道就會關閉,並用專題代碼說明失敗原因:

  • ZX_ERR_INVALID_ARGUMENT:指定介面名稱的格式有誤或無效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名稱的介面。
  • ZX_ERR_NOT_SUPPORTED:介面存在,但不支援這個通訊協定。

要求

名稱類型
name fuchsia.lowpan/InterfaceName
server_end server_end<EnergyScan>

EnergyScanResultStream

定義於 fuchsia.lowpan.device/energy_scanner.fidl

用於傳回能源掃描作業結果的通訊協定。

關閉通訊協定會取消相關掃描作業。

繼續

呼叫此方法即可擷取下一組能源掃描結果。

最後一個組合會沒有任何項目,且通訊協定將關閉。

要求

<EMPTY>

回應

名稱類型
results vector<EnergyScanResult>[32]

結構化

ProvisioningParams

定義於 fuchsia.lowpan.device/provision_params.fidl

欄位類型說明預設
identity Identity

網路的識別資訊。

無預設
credential Credential?

用來驗證網路的憑證。

無預設

ENUMS

ConnectivityState 彈性

類型:int32

定義於 fuchsia.lowpan.device/device.fidl

LoWPAN 連線狀態

此列舉說明裝置提供的連線等級。

名稱說明
1

停用狀態。

處於這個狀態的裝置已取消佈建,且無法進行管理 (停用)。

只要呼叫 Leave 再加上 SetActive(false),即可明確輸入這個狀態。

2

就緒狀態。

處於這個狀態時,裝置已佈建於網路,但管理員已停用 (停用)。

您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:

  • INACTIVE:透過呼叫 ProvisionNetwork(...)
  • ATTACHINGATTACHEDISOLATEDCOMMISSIONING:透過呼叫 SetActive(false)
3

離線狀態。

處於這個狀態的裝置屬於管理啟用 (使用中) 功能,但尚未佈建完成,因此也沒有可連接的網路。

您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:

  • INACTIVE:透過呼叫 SetActive(true)
  • ATTACHINGATTACHEDISOLATEDCOMMISSIONING:透過呼叫 Leave()
4

正在附加狀態。

處於這個狀態時,裝置將會進行管理 (使用中),並且佈建給網路或即將佈建供網路使用。

當介面開始嘗試尋找其他節點時,就會進入此狀態,以便連接至任何現有的網路片段,或是在形成新網路時,為未指定參數計算最佳值。

您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:

  • READY:透過呼叫 SetActive(true)
  • OFFLINEATTACHINGATTACHEDISOLATEDCOMMISSIONING:透過呼叫 ProvisionNetwork(...)FormNetwork(...)JoinNetwork(...) 的方式
5

已附加狀態。

處於這個狀態時,裝置均為管理啟用 (使用中) 功能,並已佈建供網路使用。裝置是網路上的活躍參與者,且可以與同業通訊。

這個狀態通常表示對等點可以使用,但受到目前的網路條件或隱私權保護措施影響,可能並非如此。

通常無法直接輸入這個狀態,而是在連線 (恢復) 後自動從 ATTACHINGISOLATED 狀態進入這個狀態。

6

隔離狀態。

處於這個狀態時,裝置均為管理啟用 (使用中) 功能,並已佈建供網路使用。然而,由於已佈建的網路在範圍內沒有對等互連,因此裝置沒有連線。

一旦同一網路上的對等裝置進入範圍,連線狀態最終就會切換回 ATTACHED,表示至少與一個對等點的連線已恢復連線。

這個狀態通常無法直接輸入,而是可以自動從 ATTACHINGATTACHED 狀態進入這個狀態。

7

調試狀態。

目前未使用,但之後會用於支援頻內調校。一般來說,除了裝置未佈建的狀態以外,我們通常會將此視為 ATTACHING 狀態的同義詞。

角色彈性

類型:int32

定義於 fuchsia.lowpan.device/device.fidl

LoWPAN 角色類型。

這類類型說明瞭裝置可以在網路上扮演的角色。

名稱說明
1

已卸離角色。介面目前並未參與網路 因為找不到父項

2

裝置角色。終端裝置不會代表其他節點轉送流量。

3

路由器角色。路由器可協助在網狀網路之間轉送流量。

請注意,這個角色與裝置屬於「邊界路由器」無關。

並非所有網路類型都支援這個角色。

4

休眠端裝置角色。

具備這個角色的最終裝置將處於「名義」狀態,並定期喚醒其家長,查看是否有預定的封包。這類裝置的耗電量異常低,但封包延遲時間可能長達數十秒(視節點的設定方式而定)。並非所有網路類型都支援這個角色。

並非所有網路類型都支援這個角色。

5

「睡好客」角色。

具有這個角色的路由器不會正式處於休眠狀態,並會定期喚醒其他路由器及其子項進行檢查。

並非所有網路類型都支援這個角色。

6

主管角色。

在 Thread 網路上,每個分區/片段的路由器都會被指定為「主要路由器」,這意味著它被視為所有網路資料的權威。在大多數情況下,這個角色可視為 Role::ROUTER 的同義詞。

並非所有網路類型都支援這個角色。

7

協調者角色。

並非所有網路類型都支援這個角色。

資料表

AllCounters

定義於 fuchsia.lowpan.device/counters.fidl

描述所有計數器。

如果沒有支援計數器,則可留空。

序數欄位類型說明
mac_tx MacCounters

TX 的 MAC 計數器

mac_rx MacCounters

RX 適用的 MAC 計數器

coex_tx CoexCounters

德克薩斯州的 Coex 計數器

coex_rx CoexCounters

RX 的 Coex 計數器

coex_saturated bool

由於內部計數器溢位導致 Coex 統計資料有誤。

重設計數器即可清除此標記。

ip_tx IpCounters

TX 的 IP 計數器。

新增日期:8
ip_rx IpCounters

RX 的 IP 計數器。

新增日期:8

CoexCounters

定義於 fuchsia.lowpan.device/counters.fidl

與 RF 共存相關的計數器。

部分計數器僅適用於 RX 或 TX。詳情請參閱這篇文章

序數欄位類型說明
requests uint64

要求數量

grant_immediate uint64

授權處於有效狀態的要求數量

grant_wait uint64

授權處於閒置狀態的要求數量

grant_wait_activated uint64

授權處於閒置狀態 最終授予的要求數量

grant_wait_timeout uint64

授權處於非使用中狀態的要求數量。

grant_deactivated_during_request uint64

授權停用時正在進行的要求數量

delayed_grant uint64

未獲準的請求數量在 50 微秒內

avg_delay_request_to_grant_usec uint32

要求授予權限的平均時間 (以微秒為單位)

grant_none uint64

完成但未收到授權的要求數量。

僅限接收。

DeviceState

定義於 fuchsia.lowpan.device/device.fidl

LoWPAN 裝置的合併狀態

包含 LoWPAN 裝置的各種屬性,定義其目前的作業狀態。

您會在第一次叫用 WatchDeviceState() 時取得目前狀態的快照,之後如果使用該方法的後續叫用將傳回差異值。

序數欄位類型說明
connectivity_state ConnectivityState

LoWPAN 連線狀態

這個欄位會說明裝置目前提供的連線程度。

role Role

LoWPAN 角色

這個欄位說明這部裝置目前在目前網路所扮演的角色。

EnergyScanParameters

定義於 fuchsia.lowpan.device/energy_scanner.fidl

說明能量掃描的參數。

序數欄位類型說明
channels vector<uint16>[200]

要掃描的頻道子集。

如未指定,系統會掃描所有版本。

dwell_time_ms uint32

每個管道的能源掃描所需停留時間,以毫秒為單位。

請注意,韌體限制可能會導致您無法使用確切停留時間。在這類情況下,將會使用近似值。

實作必須能夠支援至少 5000 毫秒 (5 秒) 的停留時間。確切支援的停留時間範圍則視裝置/驅動程式庫而定。

如果為這部裝置設定的值超出支援的範圍值,系統會將值限制為最接近的有效值,因此如果將值設為零,系統一律會要求該裝置支援的最小能源掃描時間長度。

如未指定,系統將使用大約 500 毫秒的停留時間。

EnergyScanResult

定義於 fuchsia.lowpan.device/energy_scanner.fidl

說明能量掃描單一管道的結果。

序數欄位類型說明
channel_index fuchsia.lowpan/ChannelIndex

此能源掃描結果的管道索引。

max_rssi int32

在這個管道上偵測到的 RSSI 最大值。

min_rssi int32

在這個管道中偵測到的最低 RSSI 數量下限。

身分識別

定義於 fuchsia.lowpan.device/device.fidl

序數欄位類型說明
raw_name vector<uint8>[63]

網路名稱的原始位元組。 這通常是 StringPrep 的 UTF8 編碼。

請注意,向使用者顯示這個值時,請務必特別小心,因為有很多方法讓外觀相似的 UTF8 字串具有不同的位元碼表示法。

net_type NetworkType

用於識別網路類型的字串。

已知的通訊協定 ID 與特定字串值相關聯,例如「org.threadgroup.std.thread」或「org.zigbee.std.zigbee-ip」。若是未知的通訊協定 ID,字串會對應至類似 fuchsia.lowpan.net_type.802.15.4.pid.XX,其中 XX 是來自 802.14.5 信標的通訊協定 ID 值。加入、形成或佈建時,此為選填欄位。

channel fuchsia.lowpan/ChannelIndex

頻道索引。

panid uint16

802.14.5 網路 (或同等網路) 的 PANID。

mesh_local_prefix fuchsia.net/Ipv6AddressWithPrefix

IPv6 網格-本機前置字串。

此參數可讓您決定目前網路的網狀本機 IPv6 前置字串,或是在為網路佈建介面或形成新網路時指定前置字串。

前置字串長度一律為 64 位元,因此系統只會使用值的 64 位元;讀取時必須忽略最小的有效位元,設定時必須忽略 0。

如果提供給 JoinNetwork(),系統會忽略這個欄位。

xpanid uint8[8]

已擴充 PANID。

新增時間:11 張

IpCounters

定義於 fuchsia.lowpan.device/counters.fidl

與 IP 層相關聯的計數器。

新增日期:8

序數欄位類型說明
success uint32

成功傳送/接收的 IPv6 封包數。

failure uint32

無法傳輸/接收的 IPv6 封包數量。

MacCounters

定義於 fuchsia.lowpan.device/counters.fidl

與 MAC 層相關聯的計數器。

部分計數器僅適用於 RX 或 TX。

序數欄位類型說明
total uint32

影格總數

unicast uint32

單點傳播的影格總數

broadcast uint32

廣播影格總數

ack_requested uint32

包含確認要求的影格數量

acked uint32

已確認的影格數

no_ack_requested uint32

沒有確認要求的影格數量

data uint32

資料框架數量

data_poll uint32

資料輪詢影格數量

beacon uint32

信標影格數量

beacon_request uint32

信標要求影格數

other uint32

其他類型的影格數量

address_filtered uint32

依地址篩選器 (許可清單或拒絕清單) 篩選的影格數。

retries uint32

重新傳輸嘗試次數。 僅限德州。

direct_max_retry_expiry uint32

即時訊息的重新傳輸過期次數。 僅限德州。

indirect_max_retry_expiry uint32

僅限間接訊息的重新傳輸次數 (僅限 TX) 的重試次數。

dest_addr_filtered uint32

已接收到依目的地檢查篩選的影格數量。僅限 RX。

duplicated uint32

收到的重複影格數量。僅限 RX。

err_no_frame uint32

沒有內容格式或內容格式錯誤的影格數量。僅限 RX。

err_unknown_neighbor uint32

接收到來自不明鄰點的影格數量。僅限 RX。

err_invalid_src_addr uint32

接收到來源地址無效的影格數量。僅限 RX。

err_sec uint32

收到有安全性錯誤的影格數量。僅限 RX。

err_fcs uint32

出現 FCS 錯誤的影格數量。僅限 RX。

err_cca uint32

CCA 失敗次數。僅限德州。

err_abort uint32

因取消錯誤而造成的影格傳輸失敗次數。僅限德州。

err_busy_channel uint32

因管道忙碌而捨棄的影格數量。僅限德州。

err_other uint32

發生其他錯誤的影格數量。

聯合國

憑證彈性

定義於 fuchsia.lowpan.device/device.fidl

說明 LoWPAN 憑證。

目前僅支援對稱網路金鑰,但日後可能會擴充為支援其他類型的憑證,例如密碼、PAKE 密鑰或憑證/私密金鑰組合的參照。

序數Variant類型說明
network_key vector<uint8>[32]

說明對稱金鑰憑證。

對稱金鑰的大小由基礎網路技術定義。針對 Thread,此值是 16 位元組的值。

請注意,這個值不是密碼。

業者

名稱類型說明
MAX_CHANNELS 200 uint16

Device.GetSupportedChannels 傳回的頻道數量上限。

並根據任何合理的未來用途,選擇任意大小的值。

MAX_NETWORK_TYPES 16 uint16

LoWPAN 裝置可支援的不重複網路類型數量上限。

16 的選擇代表任意上限。大多數裝置僅支援一種,有時裝置可能支援兩天。之所以選擇十六個,是因為較大的螢幕尺寸足以應付想像力故障的問題,但也夠小,無法造成系統穩定性問題。

MAX_NET_TYPE_LEN 64 uint16

網路類型字串的長度上限。

選擇大小必須夠大,足以因應任何合理的未來網路類型。

MAX_STREAM_SET_SIZE 32 uint16

掃描串流一次可傳回的項目數量上限。

NET_TYPE_RAW_6LOWPAN fuchsia.lowpan.net_type.6lowpan String
NET_TYPE_THREAD_1_X org.threadgroup.std.thread.1 String
NET_TYPE_UNKNOWN_802_15_4_PID fuchsia.lowpan.net_type.802.15.4.pid String
NET_TYPE_ZIGBEE_IP_1_X org.zigbee.std.zigbee-ip.1 String

別名

名稱說明
NetworkType string[MAX_NET_TYPE_LEN]

說明網路類型的字串。