通訊協定
計數器
定義於 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
擷取目前的憑證。
傳回的憑證起源於先前對 ProvisionNetwork
、JoinNetwork
或 FormNetwork
的呼叫。如果裝置尚未佈建 (例如透過呼叫 LeaveNetwork()
),這個方法就不會傳回任何內容。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
credential |
Credential?
|
GetCurrentMacAddress
傳回這部裝置目前使用的 MAC 位址 (可能與靜態工廠指派的 MAC 位址不同)。
這個位址通常是靜態的,但當裝置重新連結至其他網路或執行恢復原廠設定時,位址可能會變更。
要求
<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 |
停用狀態。 處於這個狀態的裝置已取消佈建,且無法進行管理 (停用)。 只要呼叫 |
準備就緒 |
2 |
就緒狀態。 處於這個狀態時,裝置已佈建於網路,但管理員已停用 (停用)。 您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:
|
離線 |
3 |
離線狀態。 處於這個狀態的裝置屬於管理啟用 (使用中) 功能,但尚未佈建完成,因此也沒有可連接的網路。 您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:
|
附加 |
4 |
正在附加狀態。 處於這個狀態時,裝置將會進行管理 (使用中),並且佈建給網路或即將佈建供網路使用。 當介面開始嘗試尋找其他節點時,就會進入此狀態,以便連接至任何現有的網路片段,或是在形成新網路時,為未指定參數計算最佳值。 您可以根據目前的連線狀態,透過下列動作直接輸入這個狀態:
|
已進球 |
5 |
已附加狀態。 處於這個狀態時,裝置均為管理啟用 (使用中) 功能,並已佈建供網路使用。裝置是網路上的活躍參與者,且可以與同業通訊。 這個狀態通常表示對等點可以使用,但受到目前的網路條件或隱私權保護措施影響,可能並非如此。 通常無法直接輸入這個狀態,而是在連線 (恢復) 後自動從 |
ISO 感光度 |
6 |
隔離狀態。 處於這個狀態時,裝置均為管理啟用 (使用中) 功能,並已佈建供網路使用。然而,由於已佈建的網路在範圍內沒有對等互連,因此裝置沒有連線。 一旦同一網路上的對等裝置進入範圍,連線狀態最終就會切換回 這個狀態通常無法直接輸入,而是可以自動從 |
建議 |
7 |
調試狀態。 目前未使用,但之後會用於支援頻內調校。一般來說,除了裝置未佈建的狀態以外,我們通常會將此視為 |
角色彈性
類型:int32
定義於 fuchsia.lowpan.device/device.fidl
LoWPAN 角色類型。
這類類型說明瞭裝置可以在網路上扮演的角色。
名稱 | 值 | 說明 |
---|---|---|
已指定 |
1 |
已卸離角色。介面目前並未參與網路 因為找不到父項 |
END_DEVICE |
2 |
裝置角色。終端裝置不會代表其他節點轉送流量。 |
路線 |
3 |
路由器角色。路由器可協助在網狀網路之間轉送流量。 請注意,這個角色與裝置屬於「邊界路由器」無關。 並非所有網路類型都支援這個角色。 |
SLEEPY_END_DEVICE |
4 |
休眠端裝置角色。 具備這個角色的最終裝置將處於「名義」狀態,並定期喚醒其家長,查看是否有預定的封包。這類裝置的耗電量異常低,但封包延遲時間可能長達數十秒(視節點的設定方式而定)。並非所有網路類型都支援這個角色。 並非所有網路類型都支援這個角色。 |
SLEEPY_ROUTER |
5 |
「睡好客」角色。 具有這個角色的路由器不會正式處於休眠狀態,並會定期喚醒其他路由器及其子項進行檢查。 並非所有網路類型都支援這個角色。 |
領先者 |
6 |
主管角色。 在 Thread 網路上,每個分區/片段的路由器都會被指定為「主要路由器」,這意味著它被視為所有網路資料的權威。在大多數情況下,這個角色可視為 Role::ROUTER 的同義詞。 並非所有網路類型都支援這個角色。 |
管理者 |
7 |
協調者角色。 並非所有網路類型都支援這個角色。 |
資料表
AllCounters
定義於 fuchsia.lowpan.device/counters.fidl
描述所有計數器。
如果沒有支援計數器,則可留空。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
mac_tx |
MacCounters
|
TX 的 MAC 計數器 |
2 |
mac_rx |
MacCounters
|
RX 適用的 MAC 計數器 |
3 |
coex_tx |
CoexCounters
|
德克薩斯州的 Coex 計數器 |
4 |
coex_rx |
CoexCounters
|
RX 的 Coex 計數器 |
5 |
coex_saturated |
bool
|
由於內部計數器溢位導致 Coex 統計資料有誤。 重設計數器即可清除此標記。 |
6 |
ip_tx |
IpCounters
|
TX 的 IP 計數器。 新增日期:8
|
7 |
ip_rx |
IpCounters
|
RX 的 IP 計數器。 新增日期:8
|
CoexCounters
定義於 fuchsia.lowpan.device/counters.fidl
與 RF 共存相關的計數器。
部分計數器僅適用於 RX 或 TX。詳情請參閱這篇文章。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
requests |
uint64
|
要求數量 |
2 |
grant_immediate |
uint64
|
授權處於有效狀態的要求數量 |
3 |
grant_wait |
uint64
|
授權處於閒置狀態的要求數量 |
4 |
grant_wait_activated |
uint64
|
授權處於閒置狀態 最終授予的要求數量 |
5 |
grant_wait_timeout |
uint64
|
授權處於非使用中狀態的要求數量。 |
6 |
grant_deactivated_during_request |
uint64
|
授權停用時正在進行的要求數量 |
7 |
delayed_grant |
uint64
|
未獲準的請求數量在 50 微秒內 |
8 |
avg_delay_request_to_grant_usec |
uint32
|
要求授予權限的平均時間 (以微秒為單位) |
9 |
grant_none |
uint64
|
完成但未收到授權的要求數量。 僅限接收。 |
DeviceState
定義於 fuchsia.lowpan.device/device.fidl
LoWPAN 裝置的合併狀態
包含 LoWPAN 裝置的各種屬性,定義其目前的作業狀態。
您會在第一次叫用 WatchDeviceState()
時取得目前狀態的快照,之後如果使用該方法的後續叫用將傳回差異值。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
connectivity_state |
ConnectivityState
|
LoWPAN 連線狀態 這個欄位會說明裝置目前提供的連線程度。 |
2 |
role |
Role
|
LoWPAN 角色 這個欄位說明這部裝置目前在目前網路所扮演的角色。 |
EnergyScanParameters
定義於 fuchsia.lowpan.device/energy_scanner.fidl
說明能量掃描的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
channels |
vector<uint16>[200]
|
要掃描的頻道子集。 如未指定,系統會掃描所有版本。 |
2 |
dwell_time_ms |
uint32
|
每個管道的能源掃描所需停留時間,以毫秒為單位。 請注意,韌體限制可能會導致您無法使用確切停留時間。在這類情況下,將會使用近似值。 實作必須能夠支援至少 5000 毫秒 (5 秒) 的停留時間。確切支援的停留時間範圍則視裝置/驅動程式庫而定。 如果為這部裝置設定的值超出支援的範圍值,系統會將值限制為最接近的有效值,因此如果將值設為零,系統一律會要求該裝置支援的最小能源掃描時間長度。 如未指定,系統將使用大約 500 毫秒的停留時間。 |
EnergyScanResult
定義於 fuchsia.lowpan.device/energy_scanner.fidl
說明能量掃描單一管道的結果。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
channel_index |
fuchsia.lowpan/ChannelIndex
|
此能源掃描結果的管道索引。 |
2 |
max_rssi |
int32
|
在這個管道上偵測到的 RSSI 最大值。 |
3 |
min_rssi |
int32
|
在這個管道中偵測到的最低 RSSI 數量下限。 |
身分識別
定義於 fuchsia.lowpan.device/device.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
raw_name |
vector<uint8>[63]
|
網路名稱的原始位元組。 這通常是 StringPrep 的 UTF8 編碼。 請注意,向使用者顯示這個值時,請務必特別小心,因為有很多方法讓外觀相似的 UTF8 字串具有不同的位元碼表示法。 |
3 |
net_type |
NetworkType
|
用於識別網路類型的字串。 已知的通訊協定 ID 與特定字串值相關聯,例如「org.threadgroup.std.thread」或「org.zigbee.std.zigbee-ip」。若是未知的通訊協定 ID,字串會對應至類似 |
4 |
channel |
fuchsia.lowpan/ChannelIndex
|
頻道索引。 |
5 |
panid |
uint16
|
802.14.5 網路 (或同等網路) 的 PANID。 |
6 |
mesh_local_prefix |
fuchsia.net/Ipv6AddressWithPrefix
|
IPv6 網格-本機前置字串。 此參數可讓您決定目前網路的網狀本機 IPv6 前置字串,或是在為網路佈建介面或形成新網路時指定前置字串。 前置字串長度一律為 64 位元,因此系統只會使用值的 64 位元;讀取時必須忽略最小的有效位元,設定時必須忽略 0。 如果提供給 |
7 |
xpanid |
uint8[8]
|
已擴充 PANID。 新增時間:11 張
|
IpCounters
定義於 fuchsia.lowpan.device/counters.fidl
與 IP 層相關聯的計數器。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
success |
uint32
|
成功傳送/接收的 IPv6 封包數。 |
2 |
failure |
uint32
|
無法傳輸/接收的 IPv6 封包數量。 |
MacCounters
定義於 fuchsia.lowpan.device/counters.fidl
與 MAC 層相關聯的計數器。
部分計數器僅適用於 RX 或 TX。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
total |
uint32
|
影格總數 |
2 |
unicast |
uint32
|
單點傳播的影格總數 |
3 |
broadcast |
uint32
|
廣播影格總數 |
4 |
ack_requested |
uint32
|
包含確認要求的影格數量 |
5 |
acked |
uint32
|
已確認的影格數 |
6 |
no_ack_requested |
uint32
|
沒有確認要求的影格數量 |
7 |
data |
uint32
|
資料框架數量 |
8 |
data_poll |
uint32
|
資料輪詢影格數量 |
9 |
beacon |
uint32
|
信標影格數量 |
10 |
beacon_request |
uint32
|
信標要求影格數 |
11 |
other |
uint32
|
其他類型的影格數量 |
12 |
address_filtered |
uint32
|
依地址篩選器 (許可清單或拒絕清單) 篩選的影格數。 |
13 |
retries |
uint32
|
重新傳輸嘗試次數。 僅限德州。 |
14 |
direct_max_retry_expiry |
uint32
|
即時訊息的重新傳輸過期次數。 僅限德州。 |
15 |
indirect_max_retry_expiry |
uint32
|
僅限間接訊息的重新傳輸次數 (僅限 TX) 的重試次數。 |
16 |
dest_addr_filtered |
uint32
|
已接收到依目的地檢查篩選的影格數量。僅限 RX。 |
17 |
duplicated |
uint32
|
收到的重複影格數量。僅限 RX。 |
18 |
err_no_frame |
uint32
|
沒有內容格式或內容格式錯誤的影格數量。僅限 RX。 |
19 |
err_unknown_neighbor |
uint32
|
接收到來自不明鄰點的影格數量。僅限 RX。 |
200 |
err_invalid_src_addr |
uint32
|
接收到來源地址無效的影格數量。僅限 RX。 |
21 |
err_sec |
uint32
|
收到有安全性錯誤的影格數量。僅限 RX。 |
22 |
err_fcs |
uint32
|
出現 FCS 錯誤的影格數量。僅限 RX。 |
23 |
err_cca |
uint32
|
CCA 失敗次數。僅限德州。 |
24 |
err_abort |
uint32
|
因取消錯誤而造成的影格傳輸失敗次數。僅限德州。 |
25 |
err_busy_channel |
uint32
|
因管道忙碌而捨棄的影格數量。僅限德州。 |
26 |
err_other |
uint32
|
發生其他錯誤的影格數量。 |
聯合國
憑證彈性
定義於 fuchsia.lowpan.device/device.fidl
說明 LoWPAN 憑證。
目前僅支援對稱網路金鑰,但日後可能會擴充為支援其他類型的憑證,例如密碼、PAKE 密鑰或憑證/私密金鑰組合的參照。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
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 ] |
說明網路類型的字串。 |