Chẩn đoán lưới

Mô-đun này bao gồm các định nghĩa và chức năng cho Chẩn đoán lưới.

Tóm tắt

API Mesh Diagnostics yêu cầu OPENTHREAD_CONFIG_MESH_DIAG_ENABLEOPENTHREAD_FTD.

Typedef

otMeshDiagChildEntry typedef
Đại diện cho thông tin về mục nhập con từ otMeshDiagQueryChildTable().
otMeshDiagChildInfo typedef
Biểu thị thông tin về thành phần con được phát hiện trong lưới Thread bằng otMeshDiagDiscoverTopology().
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) typedef
void(*
Đại diện cho lệnh gọi lại mà otMeshDiagQueryChildrenIp6Addrs() sử dụng để cung cấp thông tin về MTD và danh sách địa chỉ IPv6 của phần tử con đó.
otMeshDiagChildIterator typedef
Một trình vòng lặp mờ để lặp lại danh sách các phần tử con của bộ định tuyến.
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) typedef
void(*
Loại con trỏ biểu thị lệnh gọi lại được otMeshDiagDiscoverTopology() sử dụng để cung cấp thông tin về một bộ định tuyến đã phát hiện.
otMeshDiagDiscoverConfig typedef
Đại diện cho tập hợp cấu hình được dùng khi khám phá cấu trúc liên kết dạng lưới cho biết các mục cần khám phá.
otMeshDiagIp6AddrIterator typedef
Một trình vòng lặp mờ để lặp lại danh sách địa chỉ IPv6 của một bộ định tuyến.
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) typedef
void(*
Đại diện cho lệnh gọi lại mà otMeshDiagQueryChildTable() sử dụng để cung cấp thông tin về các mục con trong bảng.
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) typedef
void(*
Đại diện cho lệnh gọi lại mà otMeshDiagQueryRouterNeighborTable() sử dụng để cung cấp thông tin về các mục nhập trong bảng bộ định tuyến lân cận.
otMeshDiagRouterInfo typedef
Biểu thị thông tin về một bộ định tuyến trong lưới Thread được phát hiện bằng otMeshDiagDiscoverTopology().
otMeshDiagRouterNeighborEntry typedef
Đại diện cho thông tin về mục nhập lân cận bộ định tuyến từ otMeshDiagQueryRouterNeighborTable().

Hàm

otMeshDiagCancel(otInstance *aInstance)
void
Huỷ quá trình khám phá cấu trúc liên kết đang diễn ra nếu có, nếu không thì không cần thực hiện hành động nào.
otMeshDiagDiscoverTopology(otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext)
Bắt đầu khám phá cấu trúc liên kết mạng.
otMeshDiagGetNextChildInfo(otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo)
Lặp lại qua các phần tử con đã được phát hiện của bộ định tuyến.
otMeshDiagGetNextIp6Address(otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address)
Lặp lại qua các địa chỉ IPv6 đã phát hiện của bộ định tuyến hoặc con MTD.
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
Bắt đầu truy vấn bảng con của một bộ định tuyến cụ thể.
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
Gửi truy vấn đến thành phần mẹ để truy xuất địa chỉ IPv6 của tất cả MTD con cháu của nó.
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
Bắt đầu truy vấn bảng lân cận của bộ định tuyến cho một bộ định tuyến cụ thể.

Cấu trúc

otMeshDiagChildEntry

Đại diện cho thông tin về mục nhập con từ otMeshDiagQueryChildTable().

otMeshDiagChildInfo

Biểu thị thông tin về thành phần con được phát hiện trong lưới Thread bằng otMeshDiagDiscoverTopology().

otMeshDiagDiscoverConfig

Đại diện cho tập hợp cấu hình được dùng khi khám phá cấu trúc liên kết dạng lưới cho biết các mục cần khám phá.

otMeshDiagRouterInfo

Biểu thị thông tin về một bộ định tuyến trong lưới Thread được phát hiện bằng otMeshDiagDiscoverTopology().

otMeshDiagRouterNeighborEntry

Đại diện cho thông tin về mục nhập lân cận bộ định tuyến từ otMeshDiagQueryRouterNeighborTable().

Typedef

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

Đại diện cho thông tin về mục nhập con từ otMeshDiagQueryChildTable().

mSupportsErrRate cho biết tính năng theo dõi lỗi có được hỗ trợ hay không và các giá trị mFrameErrorRatemMessageErrorRate có hợp lệ hay không. Tỷ lệ lỗi khung hình theo dõi các lỗi tx khung (đối với thành phần con) ở lớp MAC, trong khi mMessageErrorRate theo dõi tỷ lệ lỗi thông báo IPv6 (phía trên lớp MAC và sau khi thử lại MAC) khi thông báo IPv6 bị huỷ. Ví dụ: nếu thông báo có kích thước lớn và yêu cầu phân mảnh 6LoWPAN, tx thông báo sẽ được coi là không thành công nếu một trong các tx khung phân mảnh không thành công (ví dụ: chưa bao giờ được xác nhận).

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

Biểu thị thông tin về thành phần con được phát hiện trong lưới Thread bằng otMeshDiagDiscoverTopology().

otMeshDiagChildIp6AddrsCallback

void(* otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext)

Đại diện cho lệnh gọi lại mà otMeshDiagQueryChildrenIp6Addrs() sử dụng để cung cấp thông tin về MTD và danh sách địa chỉ IPv6 của phần tử con đó.

Khi aErrorOT_ERROR_PENDING, điều này cho biết rằng có nhiều phần tử con hơn và lệnh gọi lại sẽ được gọi lại.

Thông tin chi tiết
Thông số
[in] aError
OT_ERROR_PENDING Cho biết có nhiều phần tử con hơn trong bảng. OT_ERROR_NONE Cho biết bảng đã hoàn tất. OT_ERROR_ Grand Đã hết thời gian chờ phản hồi.
[in] aChildRloc16
RLOC16 của trẻ. 0xfffe được dùng trên OT_ERROR_RESPONSE_TIMEOUT.
[in] aIp6AddrIterator
Một trình lặp lại để đi qua địa chỉ IPv6 của thành phần con với aRloc bằng otMeshDiagGetNextIp6Address(). Đặt thành NULL trên OT_ERROR_RESPONSE_TIMEOUT.
[in] aContext
Ngữ cảnh dành riêng cho ứng dụng.

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

Một trình vòng lặp mờ để lặp lại danh sách các phần tử con của bộ định tuyến.

Con trỏ đến thực thể của loại này được cung cấp trong otMeshDiagRouterInfo.

otMeshDiagDiscoverCallback

void(* otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext)

Loại con trỏ biểu thị lệnh gọi lại được otMeshDiagDiscoverTopology() sử dụng để cung cấp thông tin về một bộ định tuyến đã phát hiện.

Khi aErrorOT_ERROR_PENDING, việc này cho biết quá trình khám phá chưa hoàn tất và sẽ còn nhiều bộ định tuyến khác cần khám phá, sau đó lệnh gọi lại sẽ được gọi lại.

Thông tin chi tiết
Thông số
[in] aError
OT_ERROR_PENDING Cho biết có nhiều bộ định tuyến khác được phát hiện. OT_ERROR_NONE Cho biết đây là bộ định tuyến cuối cùng và quá trình khám phá lưới đã hoàn tất. OT_ERROR_"}_TIMEOUT đã hết thời gian chờ phản hồi từ một hoặc nhiều bộ định tuyến.
[in] aRouterInfo
Thông tin bộ định tuyến đã phát hiện (có thể rỗng nếu aError có giá trị OT_ERROR_APPROVAL_TIMEOUT).
[in] aContext
Ngữ cảnh dành riêng cho ứng dụng.

otMeshDiagDiscoverConfig

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

Đại diện cho tập hợp cấu hình được dùng khi khám phá cấu trúc liên kết dạng lưới cho biết các mục cần khám phá.

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

Một trình vòng lặp mờ để lặp lại danh sách địa chỉ IPv6 của một bộ định tuyến.

Con trỏ đến thực thể của loại này được cung cấp trong otMeshDiagRouterInfo.

otMeshDiagQueryChildTableCallback

void(* otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext)

Đại diện cho lệnh gọi lại mà otMeshDiagQueryChildTable() sử dụng để cung cấp thông tin về các mục con trong bảng.

Khi aErrorOT_ERROR_PENDING, điều này cho biết bảng vẫn còn nhiều mục nhập khác và lệnh gọi lại sẽ được gọi lại.

Thông tin chi tiết
Thông số
[in] aError
OT_ERROR_PENDING Cho biết có nhiều mục nhập hơn trong bảng. OT_ERROR_NONE Cho biết bảng đã hoàn tất. OT_ERROR_ Grand Đã hết thời gian chờ phản hồi.
[in] aChildEntry
Mục nhập con (có thể rỗng nếu aError là OT_ERROR_LENGTH_TIMEOUT hoặc OT_ERROR_NONE).
[in] aContext
Ngữ cảnh dành riêng cho ứng dụng.

otMeshDiagQueryRouterNeighborTableCallback

void(* otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext)

Đại diện cho lệnh gọi lại mà otMeshDiagQueryRouterNeighborTable() sử dụng để cung cấp thông tin về các mục nhập trong bảng bộ định tuyến lân cận.

Khi aErrorOT_ERROR_PENDING, điều này cho biết bảng vẫn còn nhiều mục nhập khác và lệnh gọi lại sẽ được gọi lại.

Thông tin chi tiết
Thông số
[in] aError
OT_ERROR_PENDING Cho biết có nhiều mục nhập hơn trong bảng. OT_ERROR_NONE Cho biết bảng đã hoàn tất. OT_ERROR_ Grand Đã hết thời gian chờ phản hồi.
[in] aNeighborEntry
Mục nhập lân cận (có thể có giá trị rỗng nếu aError là PendingIntent_TIMEOUT hoặc NONE).
[in] aContext
Ngữ cảnh dành riêng cho ứng dụng.

otMeshDiagRouterInfo

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

Biểu thị thông tin về một bộ định tuyến trong lưới Thread được phát hiện bằng otMeshDiagDiscoverTopology().

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

Đại diện cho thông tin về mục nhập lân cận bộ định tuyến từ otMeshDiagQueryRouterNeighborTable().

mSupportsErrRate cho biết tính năng theo dõi lỗi có được hỗ trợ hay không và các giá trị mFrameErrorRatemMessageErrorRate có hợp lệ hay không. Tỷ lệ lỗi khung hình theo dõi các lỗi tx khung (đối với thành phần con) ở lớp MAC, trong khi mMessageErrorRate theo dõi tỷ lệ lỗi thông báo IPv6 (phía trên lớp MAC và sau khi thử lại MAC) khi thông báo IPv6 bị huỷ. Ví dụ: nếu thông báo có kích thước lớn và yêu cầu phân mảnh 6LoWPAN, tx thông báo sẽ được coi là không thành công nếu một trong các tx khung phân mảnh không thành công (ví dụ: chưa bao giờ được xác nhận).

Hàm

otMeshDiagCancel

void otMeshDiagCancel(
  otInstance *aInstance
)

Huỷ quá trình khám phá cấu trúc liên kết đang diễn ra nếu có, nếu không thì không cần thực hiện hành động nào.

Khi quá trình khám phá đang diễn ra bị huỷ, lệnh gọi lại từ otMeshDiagDiscoverTopology() sẽ không được gọi nữa.

otMeshDiagDiscoverTopology

otError otMeshDiagDiscoverTopology(
  otInstance *aInstance,
  const otMeshDiagDiscoverConfig *aConfig,
  otMeshDiagDiscoverCallback aCallback,
  void *aContext
)

Bắt đầu khám phá cấu trúc liên kết mạng.

Thông tin chi tiết
Thông số
[in] aInstance
Thực thể OpenThread.
[in] aConfig
Cấu hình cần sử dụng để khám phá (ví dụ: mục cần khám phá).
[in] aCallback
Lệnh gọi lại để báo cáo các bộ định tuyến đã phát hiện.
[in] aContext
Ngữ cảnh để truyền vào aCallback.
Giá trị trả về
OT_ERROR_NONE
Quá trình khám phá cấu trúc liên kết mạng đã bắt đầu thành công.
OT_ERROR_BUSY
Vẫn đang xử lý một yêu cầu khám phá trước đó.
OT_ERROR_INVALID_STATE
Chưa kết nối thiết bị.
OT_ERROR_NO_BUFS
Không thể phân bổ vùng đệm để gửi thông báo khám phá.

otMeshDiagGetNextChildInfo

otError otMeshDiagGetNextChildInfo(
  otMeshDiagChildIterator *aIterator,
  otMeshDiagChildInfo *aChildInfo
)

Lặp lại qua các phần tử con đã được phát hiện của bộ định tuyến.

Hàm này PHẢI được dùng từ lệnh gọi lại otMeshDiagDiscoverCallback() và sử dụng mChildIterator từ cấu trúc aRouterInfo được cung cấp làm dữ liệu đầu vào cho lệnh gọi lại.

Thông tin chi tiết
Thông số
[in,out] aIterator
Biến lặp địa chỉ để sử dụng.
[out] aChildInfo
Con trỏ để trả về thông tin con (nếu có).
Giá trị trả về
OT_ERROR_NONE
Đã truy xuất thành công trẻ tiếp theo. aChildInfoaIterator đã được cập nhật.
OT_ERROR_NOT_FOUND
Không còn trẻ em nào nữa. Đã đến cuối danh sách.

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

Lặp lại qua các địa chỉ IPv6 đã phát hiện của bộ định tuyến hoặc con MTD.

PHẢI sử dụng

Thông tin chi tiết
Thông số
[in,out] aIterator
Biến lặp địa chỉ để sử dụng.
[out] aIp6Address
Con trỏ để trả về địa chỉ IPv6 tiếp theo (nếu có).
Giá trị trả về
OT_ERROR_NONE
Đã truy xuất thành công địa chỉ tiếp theo. aIp6AddressaIterator đã được cập nhật.
OT_ERROR_NOT_FOUND
Không còn địa chỉ nào khác. Đã đến cuối danh sách.

otMeshDiagQueryChildTable

otError otMeshDiagQueryChildTable(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagQueryChildTableCallback aCallback,
  void *aContext
)

Bắt đầu truy vấn bảng con của một bộ định tuyến cụ thể.

Thông tin chi tiết
Thông số
[in] aInstance
Thực thể OpenThread.
[in] aRloc16
RLOC16 của bộ định tuyến cần truy vấn.
[in] aCallback
Lệnh gọi lại để báo cáo bảng con được truy vấn.
[in] aContext
Ngữ cảnh để truyền vào aCallback.
Giá trị trả về
OT_ERROR_NONE
Truy vấn đã bắt đầu thành công.
OT_ERROR_BUSY
Vẫn đang xử lý một yêu cầu khám phá hoặc truy vấn trước đó.
OT_ERROR_INVALID_ARGS
aRloc16 không phải là bộ định tuyến RLOC16 hợp lệ.
OT_ERROR_INVALID_STATE
Chưa kết nối thiết bị.
OT_ERROR_NO_BUFS
Không thể phân bổ vùng đệm để gửi thông báo truy vấn.

otMeshDiagQueryChildrenIp6Addrs

otError otMeshDiagQueryChildrenIp6Addrs(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagChildIp6AddrsCallback aCallback,
  void *aContext
)

Gửi truy vấn đến thành phần mẹ để truy xuất địa chỉ IPv6 của tất cả MTD con cháu của nó.

Thông tin chi tiết
Thông số
[in] aInstance
Thực thể OpenThread.
[in] aRloc16
RLOC16 của thành phần mẹ để truy vấn.
[in] aCallback
Lệnh gọi lại để báo cáo danh sách địa chỉ IPv6 con được truy vấn.
[in] aContext
Ngữ cảnh để truyền vào aCallback.
Giá trị trả về
OT_ERROR_NONE
Truy vấn đã bắt đầu thành công.
OT_ERROR_BUSY
Vẫn đang xử lý một yêu cầu khám phá hoặc truy vấn trước đó.
OT_ERROR_INVALID_ARGS
aRloc16 không phải là RLOC16 hợp lệ.
OT_ERROR_INVALID_STATE
Chưa kết nối thiết bị.
OT_ERROR_NO_BUFS
Không thể phân bổ vùng đệm để gửi thông báo truy vấn.

otMeshDiagQueryRouterNeighborTable

otError otMeshDiagQueryRouterNeighborTable(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagQueryRouterNeighborTableCallback aCallback,
  void *aContext
)

Bắt đầu truy vấn bảng lân cận của bộ định tuyến cho một bộ định tuyến cụ thể.

Thông tin chi tiết
Thông số
[in] aInstance
Thực thể OpenThread.
[in] aRloc16
RLOC16 của bộ định tuyến cần truy vấn.
[in] aCallback
Lệnh gọi lại để báo cáo bảng được truy vấn.
[in] aContext
Ngữ cảnh để truyền vào aCallback.
Giá trị trả về
OT_ERROR_NONE
Truy vấn đã bắt đầu thành công.
OT_ERROR_BUSY
Vẫn đang xử lý một yêu cầu khám phá hoặc truy vấn trước đó.
OT_ERROR_INVALID_ARGS
aRloc16 không phải là bộ định tuyến RLOC16 hợp lệ.
OT_ERROR_INVALID_STATE
Chưa kết nối thiết bị.
OT_ERROR_NO_BUFS
Không thể phân bổ vùng đệm để gửi thông báo truy vấn.

Macro

OT_MESH_DIAG_VERSION_UNKNOWN

 OT_MESH_DIAG_VERSION_UNKNOWN 0xffff

Chỉ định rằng Phiên bản luồng là không xác định.

Thuộc tính này được dùng trong otMeshDiagRouterInfo cho thuộc tính mVersion khi thiết bị không cung cấp phiên bản. Mã này cho biết có thể thiết bị đang chạy phiên bản 1.3.0 (giá trị phiên bản 4) trở về trước.

Tài nguyên

Các chủ đề tham khảo API OpenThread bắt nguồn từ mã nguồn, có trên GitHub. Để biết thêm thông tin hoặc để đóng góp cho tài liệu của chúng tôi, hãy tham khảo Tài nguyên.