網格診斷
本單元包含網狀診斷的定義和函式。
摘要
網狀診斷 API 需要 OPENTHREAD_CONFIG_MESH_DIAG_ENABLE
和 OPENTHREAD_FTD
。
Typedefs |
|
---|---|
otMeshDiagChildEntry
|
typedefstruct otMeshDiagChildEntry
代表來自 otMeshDiagQueryChildTable() 的子項項目資訊。 |
otMeshDiagChildInfo
|
typedefstruct otMeshDiagChildInfo
使用 otMeshDiagDiscoverTopology() 代表在 Thread 網格中發現的子項相關資訊, |
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext)
|
typedefvoid(*
代表 otMeshDiagQueryChildrenIp6Addrs() 用來提供 MTD 子項及其 IPv6 位址清單的回呼。 |
otMeshDiagChildIterator
|
typedefstruct otMeshDiagChildIterator
用於疊代路由器子項清單的不透明疊代器。 |
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext)
|
typedefvoid(*
指標類型代表 otMeshDiagDiscoverTopology() 所使用的回呼,以提供找到的路由器相關資訊。 |
otMeshDiagDiscoverConfig
|
typedefstruct otMeshDiagDiscoverConfig
代表探索網格拓撲時使用的設定組合,指出要探索的項目。 |
otMeshDiagIp6AddrIterator
|
typedefstruct otMeshDiagIp6AddrIterator
這個不透明疊代器用於疊代路由器的 IPv6 位址清單。 |
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext)
|
typedefvoid(*
代表 otMeshDiagQueryChildTable() 用來提供子項資料表項目相關資訊的回呼。 |
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext)
|
typedefvoid(*
代表 otMeshDiagQueryRouterNeighborTable() 用來提供相鄰路由器資料表項目相關資訊的回呼。 |
otMeshDiagRouterInfo
|
typedefstruct otMeshDiagRouterInfo
代表使用 otMeshDiagDiscoverTopology() 找到的 Thread 網格中的路由器相關資訊。 |
otMeshDiagRouterNeighborEntry
|
typedef 代表 otMeshDiagQueryRouterNeighborTable() 中的路由器相鄰項目相關資訊。 |
函式 |
|
---|---|
otMeshDiagCancel(otInstance *aInstance)
|
void
取消進行中的拓撲探索 (如有),否則不會執行任何動作。
|
otMeshDiagDiscoverTopology(otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext)
|
開始探索網路拓撲。
|
otMeshDiagGetNextChildInfo(otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo)
|
透過路由器找到的子項進行疊代。
|
otMeshDiagGetNextIp6Address(otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address)
|
透過找到的路由器或 MTD 子項的 IPv6 位址進行疊代。
|
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
|
開始查詢特定路由器的子資料表。
|
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
|
將查詢傳送給父項,以擷取其所有 MTD 子項的 IPv6 位址。
|
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
|
開始查詢指定路由器的相鄰資料表。
|
結構 |
|
---|---|
otMeshDiagChildEntry |
代表來自 |
otMeshDiagChildInfo |
使用 |
otMeshDiagDiscoverConfig |
代表探索網格拓撲時使用的設定組合,指出要探索的項目。 |
otMeshDiagRouterInfo |
代表使用 |
otMeshDiagRouterNeighborEntry |
代表 |
Typedefs
otMeshDiagChildEntry
struct otMeshDiagChildEntry otMeshDiagChildEntry
代表來自 otMeshDiagQueryChildTable()
的子項項目資訊。
mSupportsErrRate
表示是否支援錯誤追蹤功能,且 mFrameErrorRate
和 mMessageErrorRate
值有效。影格錯誤率會追蹤 MAC 層的影格 tx 錯誤 (往子項),而 mMessageErrorRate
會在 IPv6 訊息捨棄時,追蹤 IPv6 訊息錯誤率 (位於 MAC 層上方和 MAC 重試後)。舉例來說,如果郵件較大,且需要 6LoWPAN 分割,則當其中一個片段頁框 tx 失敗 (例如從未確認),訊息 tx 就會視為失敗。
otMeshDiagChildInfo
struct otMeshDiagChildInfo otMeshDiagChildInfo
使用 otMeshDiagDiscoverTopology()
代表在 Thread 網格中發現的子項相關資訊,
otMeshDiagChildIp6AddrsCallback
void(* otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext)
代表 otMeshDiagQueryChildrenIp6Addrs()
用來提供 MTD 子項及其 IPv6 位址清單的回呼。
如果 aError
為 OT_ERROR_PENDING
,表示有更多子項,並再次叫用回呼。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
otMeshDiagChildIterator
struct otMeshDiagChildIterator otMeshDiagChildIterator
用於疊代路由器子項清單的不透明疊代器。
otMeshDiagRouterInfo
會提供這類型例項的指標。
otMeshDiagDiscoverCallback
void(* otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext)
指標類型代表 otMeshDiagDiscoverTopology()
所使用的回呼,以提供找到的路由器相關資訊。
如果 aError
為 OT_ERROR_PENDING
,表示探索尚未結束,可能還會有更多路由器可供探索,並再次叫用回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otMeshDiagDiscoverConfig
struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig
代表探索網格拓撲時使用的設定組合,指出要探索的項目。
otMeshDiagIp6AddrIterator
struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator
這個不透明疊代器用於疊代路由器的 IPv6 位址清單。
otMeshDiagRouterInfo
會提供這類型例項的指標。
otMeshDiagQueryChildTableCallback
void(* otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext)
代表 otMeshDiagQueryChildTable()
用來提供子項資料表項目相關資訊的回呼。
如果 aError
為 OT_ERROR_PENDING
,表示資料表仍有更多項目,且系統會再次叫用回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otMeshDiagQueryRouterNeighborTableCallback
void(* otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext)
代表 otMeshDiagQueryRouterNeighborTable()
用來提供相鄰路由器資料表項目相關資訊的回呼。
如果 aError
為 OT_ERROR_PENDING
,表示資料表仍有更多項目,且系統會再次叫用回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otMeshDiagRouterInfo
struct otMeshDiagRouterInfo otMeshDiagRouterInfo
代表使用 otMeshDiagDiscoverTopology()
找到的 Thread 網格中的路由器相關資訊。
otMeshDiagRouterNeighborEntry
struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry
代表 otMeshDiagQueryRouterNeighborTable()
中的路由器相鄰項目相關資訊。
mSupportsErrRate
表示是否支援錯誤追蹤功能,且 mFrameErrorRate
和 mMessageErrorRate
值有效。影格錯誤率會追蹤 MAC 層的影格 tx 錯誤 (往子項),而 mMessageErrorRate
會在 IPv6 訊息捨棄時,追蹤 IPv6 訊息錯誤率 (位於 MAC 層上方和 MAC 重試後)。舉例來說,如果郵件較大,且需要 6LoWPAN 分割,則當其中一個片段頁框 tx 失敗 (例如從未確認),訊息 tx 就會視為失敗。
函式
otMeshDiagCancel
void otMeshDiagCancel( otInstance *aInstance )
取消進行中的拓撲探索 (如有),否則不會執行任何動作。
取消進行中的探索作業後,系統不會再呼叫 otMeshDiagDiscoverTopology()
的回呼。
otMeshDiagDiscoverTopology
otError otMeshDiagDiscoverTopology( otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext )
開始探索網路拓撲。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
otMeshDiagGetNextChildInfo
otError otMeshDiagGetNextChildInfo( otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo )
透過路由器找到的子項進行疊代。
此函式「必須」從回呼 otMeshDiagDiscoverCallback()
中使用,並使用 aRouterInfo
結構體中的 mChildIterator
(做為回呼的輸入內容)。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otMeshDiagGetNextIp6Address
otError otMeshDiagGetNextIp6Address( otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address )
透過找到的路由器或 MTD 子項的 IPv6 位址進行疊代。
必須使用
- 並從回呼
otMeshDiagDiscoverCallback()
中,使用做為回呼輸入aRouterInfo
結構的mIp6AddrIterator
,或 - 來自回呼
otMeshDiagChildIp6AddrsCallback()
以及提供的aIp6AddrIterator
。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otMeshDiagQueryChildTable
otError otMeshDiagQueryChildTable( otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext )
開始查詢特定路由器的子資料表。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
otMeshDiagQueryChildrenIp6Addrs
otError otMeshDiagQueryChildrenIp6Addrs( otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext )
將查詢傳送給父項,以擷取其所有 MTD 子項的 IPv6 位址。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
otMeshDiagQueryRouterNeighborTable
otError otMeshDiagQueryRouterNeighborTable( otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext )
開始查詢指定路由器的相鄰資料表。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
巨集
OT_MESH_DIAG_VERSION_UNKNOWN
OT_MESH_DIAG_VERSION_UNKNOWN 0xffff
指定 Thread Version 不明。
如果裝置未提供版本,otMeshDiagRouterInfo
會在 mVersion
屬性中使用。這表示裝置可能搭載 1.3.0 (版本值 4) 以下版本。
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。