การวินิจฉัย Mesh

โมดูลนี้มีคำจำกัดความและฟังก์ชันสำหรับการวินิจฉัย Mesh

สรุป

API การวินิจฉัย Mesh ต้องใช้ OPENTHREAD_CONFIG_MESH_DIAG_ENABLE และ OPENTHREAD_FTD

Typedef

otMeshDiagChildEntry typedef
แสดงข้อมูลเกี่ยวกับรายการย่อยจาก otMeshDiagQueryChildTable()
otMeshDiagChildInfo typedef
แสดงข้อมูลเกี่ยวกับเด็กที่ค้นพบในโครงข่ายเทรดโดยใช้ otMeshDiagDiscoverTopology()
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) typedef
void(*
แสดงโค้ดเรียกกลับที่ otMeshDiagQueryChildrenIp6Addrs() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการย่อยของ MTD และรายการที่อยู่ IPv6
otMeshDiagChildIterator typedef
ตัววนซ้ำแบบทึบเพื่อทำซ้ำบนรายการย่อยของเราเตอร์
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) typedef
void(*
ประเภทตัวชี้แสดงโค้ดเรียกกลับที่ otMeshDiagDiscoverTopology() ใช้เพื่อให้ข้อมูลเกี่ยวกับเราเตอร์ที่ค้นพบ
otMeshDiagDiscoverConfig typedef
แสดงชุดของการกำหนดค่าที่ใช้เมื่อค้นพบโทโพโลยี Mesh ซึ่งระบุรายการที่จะค้นหา
otMeshDiagIp6AddrIterator typedef
ตัววนซ้ำแบบทึบเพื่อทำซ้ำบนรายการที่อยู่ IPv6 ของเราเตอร์
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) typedef
void(*
แสดงโค้ดเรียกกลับที่ otMeshDiagQueryChildTable() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการในตารางย่อย
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) typedef
void(*
แสดงโค้ดเรียกกลับที่ otMeshDiagQueryRouterNeighborTable() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการในตารางเราเตอร์ที่อยู่ใกล้เคียง
otMeshDiagRouterInfo typedef
แสดงข้อมูลเกี่ยวกับเราเตอร์ในโครงข่ายเทรดที่ค้นพบโดยใช้ otMeshDiagDiscoverTopology()
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)
ทำซ้ำที่อยู่ IPv6 ที่ค้นพบของเราเตอร์หรือระบบย่อย MTD
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
เริ่มการค้นหาตารางย่อยสำหรับเราเตอร์ที่ระบุ
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
ส่งคำขอไปยังระดับบนสุดเพื่อเรียกข้อมูลที่อยู่ IPv6 ของรายการย่อย MTD ทั้งหมด
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
เริ่มการค้นหาตารางข้างเคียงของเราเตอร์สำหรับเราเตอร์ที่ระบุ

โครงสร้าง

otMeshDiagChildEntry

แสดงข้อมูลเกี่ยวกับรายการย่อยจาก otMeshDiagQueryChildTable()

otMeshDiagChildInfo

แสดงข้อมูลเกี่ยวกับเด็กที่ค้นพบในโครงข่ายเทรดโดยใช้ otMeshDiagDiscoverTopology()

otMeshDiagDiscoverConfig

แสดงชุดของการกำหนดค่าที่ใช้เมื่อค้นพบโทโพโลยี Mesh ซึ่งระบุรายการที่จะค้นหา

otMeshDiagRouterInfo

แสดงข้อมูลเกี่ยวกับเราเตอร์ในโครงข่ายเทรดที่ค้นพบโดยใช้ otMeshDiagDiscoverTopology()

otMeshDiagRouterNeighborEntry

แสดงข้อมูลเกี่ยวกับรายการใกล้เคียงของเราเตอร์จาก otMeshDiagQueryRouterNeighborTable()

Typedef

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

แสดงข้อมูลเกี่ยวกับรายการย่อยจาก otMeshDiagQueryChildTable()

mSupportsErrRate จะระบุว่ารองรับฟีเจอร์การติดตามข้อผิดพลาดหรือไม่ และค่า mFrameErrorRate และ mMessageErrorRate ถูกต้อง ข้อผิดพลาดของเฟรมจะติดตามข้อผิดพลาด tx ของเฟรม (ไปยังเฟรมย่อย) ที่เลเยอร์ MAC ขณะที่ mMessageErrorRate ติดตามอัตราข้อผิดพลาดของข้อความ IPv6 (เหนือเลเยอร์ MAC และหลังจาก MAC ซ้ำ) เมื่อข้อความ IPv6 หายไป เช่น หากข้อความมีขนาดใหญ่และต้องมีการแยกส่วน 6LoWPAN ข้อความ tx จะถือว่าล้มเหลว หากเฟรม Fragment tx รายการใดรายการหนึ่งล้มเหลว (เช่น ไม่จับคู่)

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

แสดงข้อมูลเกี่ยวกับเด็กที่ค้นพบในโครงข่ายเทรดโดยใช้ otMeshDiagDiscoverTopology()

otMeshDiagChildIp6AddrsCallback

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

แสดงโค้ดเรียกกลับที่ otMeshDiagQueryChildrenIp6Addrs() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการย่อยของ MTD และรายการที่อยู่ IPv6

เมื่อ aError เท่ากับ OT_ERROR_PENDING แสดงว่ามีเด็กมากกว่านี้ และจะมีการเรียกกลับอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] aError
OT_ERROR_PENDING บ่งบอกว่ามีเด็กมากกว่าในตาราง OT_ERROR_NONE แสดงว่าตารางนี้เสร็จแล้ว OT_ERROR_RESPONSE_TIMEOUT หมดเวลาขณะรอการตอบกลับ
[in] aChildRloc16
RLOC16 ของบุตรหลาน มีการใช้ 0xfffe ใน OT_ERROR_RESPONSE_TIMEOUT
[in] aIp6AddrIterator
ตัวทำซ้ำเพื่อไปยังที่อยู่ IPv6 ของโดเมนย่อยที่มี aRloc โดยใช้ otMeshDiagGetNextIp6Address() ตั้งค่าเป็น NULL ใน OT_ERROR_RESPONSE_TIMEOUT
[in] aContext
บริบทเฉพาะแอปพลิเคชัน

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

ตัววนซ้ำแบบทึบเพื่อทำซ้ำบนรายการย่อยของเราเตอร์

ตัวชี้อินสแตนซ์ของประเภทนี้จะอยู่ใน otMeshDiagRouterInfo

otMeshDiagDiscoverCallback

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

ประเภทตัวชี้แสดงโค้ดเรียกกลับที่ otMeshDiagDiscoverTopology() ใช้เพื่อให้ข้อมูลเกี่ยวกับเราเตอร์ที่ค้นพบ

เมื่อ aError คือ OT_ERROR_PENDING จะบ่งบอกว่าการค้นพบยังไม่เสร็จสิ้น และจะมีเราเตอร์อื่นๆ ให้ค้นพบอีก และจะมีการเรียกใช้โค้ดเรียกกลับอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] aError
OT_ERROR_PENDING บ่งบอกว่ายังมีเราเตอร์อีกมากมายที่รอการค้นพบ OT_ERROR_NONE บ่งบอกว่านี่คือเราเตอร์และการสำรวจ Mesh ครั้งสุดท้าย OT_ERROR_RESPONSE_TIMEOUT หมดเวลาขณะรอการตอบกลับจากเราเตอร์อย่างน้อย 1 รายการ
[in] aRouterInfo
ข้อมูลเราเตอร์ที่ค้นพบ (อาจเป็นค่าว่างหาก aError เป็น OT_ERROR_RESPONSE_TIMEOUT)
[in] aContext
บริบทเฉพาะแอปพลิเคชัน

otMeshDiagDiscoverConfig

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

แสดงชุดของการกำหนดค่าที่ใช้เมื่อค้นพบโทโพโลยี Mesh ซึ่งระบุรายการที่จะค้นหา

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

ตัววนซ้ำแบบทึบเพื่อทำซ้ำบนรายการที่อยู่ IPv6 ของเราเตอร์

ตัวชี้อินสแตนซ์ของประเภทนี้จะอยู่ใน otMeshDiagRouterInfo

otMeshDiagQueryChildTableCallback

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

แสดงโค้ดเรียกกลับที่ otMeshDiagQueryChildTable() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการในตารางย่อย

เมื่อ aError เท่ากับ OT_ERROR_PENDING แสดงว่าตารางยังมีรายการอีก และจะเรียกใช้โค้ดเรียกกลับอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] aError
OT_ERROR_PENDING บ่งบอกว่ามีรายการเพิ่มเติมในตาราง OT_ERROR_NONE แสดงว่าตารางนี้เสร็จแล้ว OT_ERROR_RESPONSE_TIMEOUT หมดเวลาขณะรอการตอบกลับ
[in] aChildEntry
รายการย่อย (อาจเป็นค่าว่างหาก aError เป็น OT_ERROR_RESPONSE_TIMEOUT หรือ OT_ERROR_NONE)
[in] aContext
บริบทเฉพาะแอปพลิเคชัน

otMeshDiagQueryRouterNeighborTableCallback

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

แสดงโค้ดเรียกกลับที่ otMeshDiagQueryRouterNeighborTable() ใช้เพื่อให้ข้อมูลเกี่ยวกับรายการในตารางเราเตอร์ที่อยู่ใกล้เคียง

เมื่อ aError เท่ากับ OT_ERROR_PENDING แสดงว่าตารางยังมีรายการอีก และจะเรียกใช้โค้ดเรียกกลับอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] aError
OT_ERROR_PENDING บ่งบอกว่ามีรายการเพิ่มเติมในตาราง OT_ERROR_NONE แสดงว่าตารางนี้เสร็จแล้ว OT_ERROR_RESPONSE_TIMEOUT หมดเวลาขณะรอการตอบกลับ
[in] aNeighborEntry
รายการใกล้เคียง (อาจเป็น Null ถ้า aError เป็น RESPONSE_TIMEOUT หรือ NONE)
[in] aContext
บริบทเฉพาะแอปพลิเคชัน

otMeshDiagRouterInfo

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

แสดงข้อมูลเกี่ยวกับเราเตอร์ในโครงข่ายเทรดที่ค้นพบโดยใช้ otMeshDiagDiscoverTopology()

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

แสดงข้อมูลเกี่ยวกับรายการใกล้เคียงของเราเตอร์จาก otMeshDiagQueryRouterNeighborTable()

mSupportsErrRate จะระบุว่ารองรับฟีเจอร์การติดตามข้อผิดพลาดหรือไม่ และค่า mFrameErrorRate และ mMessageErrorRate ถูกต้อง ข้อผิดพลาดของเฟรมจะติดตามข้อผิดพลาด tx ของเฟรม (ไปยังเฟรมย่อย) ที่เลเยอร์ MAC ขณะที่ mMessageErrorRate ติดตามอัตราข้อผิดพลาดของข้อความ IPv6 (เหนือเลเยอร์ MAC และหลังจาก MAC ซ้ำ) เมื่อข้อความ IPv6 หายไป เช่น หากข้อความมีขนาดใหญ่และต้องมีการแยกส่วน 6LoWPAN ข้อความ tx จะถือว่าล้มเหลว หากเฟรม Fragment tx รายการใดรายการหนึ่งล้มเหลว (เช่น ไม่จับคู่)

ฟังก์ชัน

otMeshDiagCancel

void otMeshDiagCancel(
  otInstance *aInstance
)

ยกเลิกการค้นพบโทโพโลยีต่อเนื่อง หากมี หรือไม่เช่นนั้นก็ไม่ต้องดำเนินการใดๆ

เมื่อมีการยกเลิกการค้นหาที่ดำเนินการอยู่ จะไม่มีการโทรกลับจาก otMeshDiagDiscoverTopology() อีกต่อไป

otMeshDiagDiscoverTopology

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

เริ่มการค้นพบโทโพโลยีเครือข่าย

รายละเอียด
พารามิเตอร์
[in] aInstance
อินสแตนซ์ OpenThread
[in] aConfig
การกําหนดค่าที่ใช้สําหรับการค้นพบ (เช่น รายการที่จะค้นหา)
[in] aCallback
การเรียกกลับเพื่อรายงานเราเตอร์ที่ค้นพบ
[in] aContext
บริบทที่จะส่งผ่านใน aCallback
แสดงผลค่า
OT_ERROR_NONE
เริ่มการค้นหาโทโพโลยีเครือข่ายเรียบร้อยแล้ว
OT_ERROR_BUSY
คำขอสำรวจก่อนหน้านี้ยังอยู่ระหว่างดำเนินการ
OT_ERROR_INVALID_STATE
ไม่ได้แนบอุปกรณ์
OT_ERROR_NO_BUFS
ไม่สามารถจัดสรรบัฟเฟอร์เพื่อส่งข้อความการค้นพบ

otMeshDiagGetNextChildInfo

otError otMeshDiagGetNextChildInfo(
  otMeshDiagChildIterator *aIterator,
  otMeshDiagChildInfo *aChildInfo
)

ทำซ้ำผ่านลูกที่ค้นพบของเราเตอร์

ต้องใช้ฟังก์ชันนี้จากโค้ดเรียกกลับ otMeshDiagDiscoverCallback() และใช้ mChildIterator จากโครงสร้าง aRouterInfo ที่ให้ไว้เป็นอินพุตสำหรับโค้ดเรียกกลับ

รายละเอียด
พารามิเตอร์
[in,out] aIterator
ตัววนซ้ำที่อยู่ที่จะใช้
[out] aChildInfo
ตัวชี้สำหรับแสดงข้อมูลย่อย (หากมี)
แสดงผลค่า
OT_ERROR_NONE
เรียกข้อมูลย่อยถัดไปสำเร็จแล้ว อัปเดต aChildInfo และ aIterator แล้ว
OT_ERROR_NOT_FOUND
ไม่มีบุตรหลานแล้ว มาถึงส่วนท้ายของรายการแล้ว

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

ทำซ้ำที่อยู่ IPv6 ที่ค้นพบของเราเตอร์หรือระบบย่อย MTD

ต้องใช้

  • จากโค้ดเรียกกลับ otMeshDiagDiscoverCallback() และใช้ mIp6AddrIterator จากโครงสร้าง aRouterInfo ที่ให้ไว้เป็นอินพุตสำหรับโค้ดเรียกกลับ หรือ
  • จากโค้ดเรียกกลับ otMeshDiagChildIp6AddrsCallback() พร้อมกับ aIp6AddrIterator ที่ระบุ

รายละเอียด
พารามิเตอร์
[in,out] aIterator
ตัววนซ้ำที่อยู่ที่จะใช้
[out] aIp6Address
ตัวชี้สำหรับกลับไปยังที่อยู่ IPv6 ถัดไป (หากมี)
แสดงผลค่า
OT_ERROR_NONE
เรียกข้อมูลที่อยู่ถัดไปเรียบร้อยแล้ว อัปเดต aIp6Address และ aIterator แล้ว
OT_ERROR_NOT_FOUND
ไม่มีที่อยู่แล้ว มาถึงส่วนท้ายของรายการแล้ว

otMeshDiagQueryChildTable

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

เริ่มการค้นหาตารางย่อยสำหรับเราเตอร์ที่ระบุ

รายละเอียด
พารามิเตอร์
[in] aInstance
อินสแตนซ์ OpenThread
[in] aRloc16
RLOC16 ของเราเตอร์เพื่อค้นหา
[in] aCallback
โค้ดเรียกกลับเพื่อรายงานตารางย่อยที่ค้นหา
[in] aContext
บริบทที่จะส่งผ่านใน aCallback
แสดงผลค่า
OT_ERROR_NONE
เริ่มการค้นหาเรียบร้อยแล้ว
OT_ERROR_BUSY
แต่คำขอการค้นพบหรือการค้นหาก่อนหน้ายังคงดำเนินอยู่
OT_ERROR_INVALID_ARGS
aRloc16 ไม่ใช่ RLOC16 เราเตอร์ที่ถูกต้อง
OT_ERROR_INVALID_STATE
ไม่ได้แนบอุปกรณ์
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์เพื่อส่งข้อความค้นหาไม่ได้

otMeshDiagQueryChildrenIp6Addrs

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

ส่งคำขอไปยังระดับบนสุดเพื่อเรียกข้อมูลที่อยู่ IPv6 ของรายการย่อย MTD ทั้งหมด

รายละเอียด
พารามิเตอร์
[in] aInstance
อินสแตนซ์ OpenThread
[in] aRloc16
RLOC16 ของระดับบนสุดที่จะค้นหา
[in] aCallback
การเรียกกลับเพื่อรายงานรายการที่อยู่ IPv6 ย่อยที่ค้นหา
[in] aContext
บริบทที่จะส่งผ่านใน aCallback
แสดงผลค่า
OT_ERROR_NONE
เริ่มการค้นหาเรียบร้อยแล้ว
OT_ERROR_BUSY
แต่คำขอการค้นพบหรือการค้นหาก่อนหน้ายังคงดำเนินอยู่
OT_ERROR_INVALID_ARGS
aRloc16 ไม่ใช่ RLOC16 ที่ถูกต้อง
OT_ERROR_INVALID_STATE
ไม่ได้แนบอุปกรณ์
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์เพื่อส่งข้อความค้นหาไม่ได้

otMeshDiagQueryRouterNeighborTable

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

เริ่มการค้นหาตารางข้างเคียงของเราเตอร์สำหรับเราเตอร์ที่ระบุ

รายละเอียด
พารามิเตอร์
[in] aInstance
อินสแตนซ์ OpenThread
[in] aRloc16
RLOC16 ของเราเตอร์เพื่อค้นหา
[in] aCallback
โค้ดเรียกกลับเพื่อรายงานตารางที่ค้นหา
[in] aContext
บริบทที่จะส่งผ่านใน aCallback
แสดงผลค่า
OT_ERROR_NONE
เริ่มการค้นหาเรียบร้อยแล้ว
OT_ERROR_BUSY
แต่คำขอการค้นพบหรือการค้นหาก่อนหน้ายังคงดำเนินอยู่
OT_ERROR_INVALID_ARGS
aRloc16 ไม่ใช่ RLOC16 เราเตอร์ที่ถูกต้อง
OT_ERROR_INVALID_STATE
ไม่ได้แนบอุปกรณ์
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์เพื่อส่งข้อความค้นหาไม่ได้

มาโคร

OT_MESH_DIAG_VERSION_UNKNOWN

 OT_MESH_DIAG_VERSION_UNKNOWN 0xffff

ระบุว่าไม่รู้จักเวอร์ชันของเทรด

ใช้นี้ใน otMeshDiagRouterInfo สำหรับพร็อพเพอร์ตี้ mVersion เมื่ออุปกรณ์ไม่ได้ระบุเวอร์ชัน ซึ่งบ่งบอกว่าอุปกรณ์น่าจะใช้เวอร์ชัน 1.3.0 (ค่าเวอร์ชัน 4) หรือเก่ากว่า

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล