mirror of
https://github.com/espressif/openthread.git
synced 2026-08-06 10:47:46 +00:00
[net-diag] add Eui64Tlv support (#9795)
This commit is contained in:
@@ -53,7 +53,7 @@ extern "C" {
|
||||
* @note This number versions both OpenThread platform and user APIs.
|
||||
*
|
||||
*/
|
||||
#define OPENTHREAD_API_VERSION (392)
|
||||
#define OPENTHREAD_API_VERSION (393)
|
||||
|
||||
/**
|
||||
* @addtogroup api-instance
|
||||
|
||||
@@ -66,33 +66,35 @@ extern "C" {
|
||||
|
||||
enum
|
||||
{
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_EXT_ADDRESS = 0, ///< MAC Extended Address TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_SHORT_ADDRESS = 1, ///< Address16 TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MODE = 2, ///< Mode TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_TIMEOUT = 3, ///< Timeout TLV (the maximum polling time period for SEDs)
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CONNECTIVITY = 4, ///< Connectivity TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ROUTE = 5, ///< Route64 TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_LEADER_DATA = 6, ///< Leader Data TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_NETWORK_DATA = 7, ///< Network Data TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_IP6_ADDR_LIST = 8, ///< IPv6 Address List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MAC_COUNTERS = 9, ///< MAC Counters TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_BATTERY_LEVEL = 14, ///< Battery Level TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_SUPPLY_VOLTAGE = 15, ///< Supply Voltage TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD_TABLE = 16, ///< Child Table TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHANNEL_PAGES = 17, ///< Channel Pages TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_TYPE_LIST = 18, ///< Type List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MAX_CHILD_TIMEOUT = 19, ///< Max Child Timeout TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VERSION = 24, ///< Version TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_NAME = 25, ///< Vendor Name TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_MODEL = 26, ///< Vendor Model TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_SW_VERSION = 27, ///< Vendor SW Version TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_THREAD_STACK_VERSION = 28, ///< Thread Stack Version TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD = 29, ///< Child TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD_IP6_ADDR_LIST = 30, ///< Child IPv6 Address List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ROUTER_NEIGHBOR = 31, ///< Router Neighbor TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ANSWER = 32, ///< Answer TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_QUERY_ID = 33, ///< Query ID TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MLE_COUNTERS = 34, ///< MLE Counters TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_EXT_ADDRESS = 0, ///< MAC Extended Address TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_SHORT_ADDRESS = 1, ///< Address16 TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MODE = 2, ///< Mode TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_TIMEOUT = 3, ///< Timeout TLV (the maximum polling time period for SEDs)
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CONNECTIVITY = 4, ///< Connectivity TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ROUTE = 5, ///< Route64 TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_LEADER_DATA = 6, ///< Leader Data TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_NETWORK_DATA = 7, ///< Network Data TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_IP6_ADDR_LIST = 8, ///< IPv6 Address List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MAC_COUNTERS = 9, ///< MAC Counters TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_BATTERY_LEVEL = 14, ///< Battery Level TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_SUPPLY_VOLTAGE = 15, ///< Supply Voltage TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD_TABLE = 16, ///< Child Table TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHANNEL_PAGES = 17, ///< Channel Pages TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_TYPE_LIST = 18, ///< Type List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MAX_CHILD_TIMEOUT = 19, ///< Max Child Timeout TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_EUI64 = 23, ///< EUI64 TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VERSION = 24, ///< Version TLV (version number for the protocols and features)
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_NAME = 25, ///< Vendor Name TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_MODEL = 26, ///< Vendor Model TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_SW_VERSION = 27, ///< Vendor SW Version TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_THREAD_STACK_VERSION =
|
||||
28, ///< Thread Stack Version TLV (version identifier as UTF-8 string for Thread stack codebase/commit/version)
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD = 29, ///< Child TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_CHILD_IP6_ADDR_LIST = 30, ///< Child IPv6 Address List TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ROUTER_NEIGHBOR = 31, ///< Router Neighbor TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_ANSWER = 32, ///< Answer TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_QUERY_ID = 33, ///< Query ID TLV
|
||||
OT_NETWORK_DIAGNOSTIC_TLV_MLE_COUNTERS = 34, ///< MLE Counters TLV
|
||||
|
||||
};
|
||||
|
||||
@@ -275,6 +277,7 @@ typedef struct otNetworkDiagTlv
|
||||
union
|
||||
{
|
||||
otExtAddress mExtAddress;
|
||||
otExtAddress mEui64;
|
||||
uint16_t mAddr16;
|
||||
otLinkModeConfig mMode;
|
||||
uint32_t mTimeout;
|
||||
|
||||
+16
-8
@@ -7778,9 +7778,9 @@ template <> otError Interpreter::Process<Cmd("networkdiagnostic")>(Arg aArgs[])
|
||||
/**
|
||||
* @cli networkdiagnostic get
|
||||
* @code
|
||||
* networkdiagnostic get fdde:ad00:beef:0:0:ff:fe00:fc00 0 1 6e
|
||||
* networkdiagnostic get fdde:ad00:beef:0:0:ff:fe00:fc00 0 1 6 23
|
||||
* DIAG_GET.rsp/ans: 00080e336e1c41494e1c01020c000608640b0f674074c503
|
||||
* Ext Address: '0e336e1c41494e1c'
|
||||
* Ext Address: 0e336e1c41494e1c
|
||||
* Rloc16: 0x0c00
|
||||
* Leader Data:
|
||||
* PartitionId: 0x640b0f67
|
||||
@@ -7788,6 +7788,7 @@ template <> otError Interpreter::Process<Cmd("networkdiagnostic")>(Arg aArgs[])
|
||||
* DataVersion: 116
|
||||
* StableDataVersion: 197
|
||||
* LeaderRouterId: 0x03
|
||||
* EUI64: 18b4300000000004
|
||||
* Done
|
||||
* @endcode
|
||||
* @code
|
||||
@@ -7797,7 +7798,7 @@ template <> otError Interpreter::Process<Cmd("networkdiagnostic")>(Arg aArgs[])
|
||||
* Rloc16: 0x0c00
|
||||
* Done
|
||||
* DIAG_GET.rsp/ans: 00083efcdb7e3f9eb0f201021800
|
||||
* Ext Address: '3efcdb7e3f9eb0f2'
|
||||
* Ext Address: 3efcdb7e3f9eb0f2
|
||||
* Rloc16: 0x1800
|
||||
* Done
|
||||
* @endcode
|
||||
@@ -7820,10 +7821,12 @@ template <> otError Interpreter::Process<Cmd("networkdiagnostic")>(Arg aArgs[])
|
||||
* - `16`: Child Table TLV
|
||||
* - `17`: Channel Pages TLV
|
||||
* - `19`: Max Child Timeout TLV
|
||||
* - `23`: EUI64 TLV
|
||||
* - `24`: Version TLV (version number for the protocols and features)
|
||||
* - `25`: Vendor Name TLV
|
||||
* - `26`: Vendor Model TLV
|
||||
* - `27`: Vendor SW Version TLV
|
||||
* - `28`: Thread Stack Version TLV
|
||||
* - `28`: Thread Stack Version TLV (version identifier as UTF-8 string for Thread stack codebase/commit/version)
|
||||
* - `29`: Child TLV
|
||||
* - `34`: MLE Counters TLV
|
||||
* @par
|
||||
@@ -7848,8 +7851,9 @@ template <> otError Interpreter::Process<Cmd("networkdiagnostic")>(Arg aArgs[])
|
||||
* @cparam networkdiagnostic reset @ca{addr} @ca{type(s)}
|
||||
* @par
|
||||
* Sends a network diagnostic request to reset the specified Type Length Values (TLVs)
|
||||
* on the specified address(es). The only supported TLV value at this time for this
|
||||
* command is `9` (MAC Counters TLV).
|
||||
* on the specified address(es). This command only supports the
|
||||
* following TLV values: `9` (MAC Counters TLV) or `34` (MLE
|
||||
* Counters TLV)
|
||||
* @sa otThreadSendDiagnosticReset
|
||||
*/
|
||||
else if (aArgs[0] == "reset")
|
||||
@@ -7912,7 +7916,7 @@ void Interpreter::HandleDiagnosticGetResponse(otError aError,
|
||||
switch (diagTlv.mType)
|
||||
{
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_EXT_ADDRESS:
|
||||
OutputFormat("Ext Address: '");
|
||||
OutputFormat("Ext Address: ");
|
||||
OutputExtAddressLine(diagTlv.mData.mExtAddress);
|
||||
break;
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_SHORT_ADDRESS:
|
||||
@@ -7938,7 +7942,7 @@ void Interpreter::HandleDiagnosticGetResponse(otError aError,
|
||||
OutputLeaderData(kIndentSize, diagTlv.mData.mLeaderData);
|
||||
break;
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_NETWORK_DATA:
|
||||
OutputFormat("Network Data: '");
|
||||
OutputFormat("Network Data: ");
|
||||
OutputBytesLine(diagTlv.mData.mNetworkData.m8, diagTlv.mData.mNetworkData.mCount);
|
||||
break;
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_IP6_ADDR_LIST:
|
||||
@@ -7979,6 +7983,10 @@ void Interpreter::HandleDiagnosticGetResponse(otError aError,
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_MAX_CHILD_TIMEOUT:
|
||||
OutputLine("Max Child Timeout: %lu", ToUlong(diagTlv.mData.mMaxChildTimeout));
|
||||
break;
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_EUI64:
|
||||
OutputFormat("EUI64: ");
|
||||
OutputExtAddressLine(diagTlv.mData.mEui64);
|
||||
break;
|
||||
case OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_NAME:
|
||||
OutputLine("Vendor Name: %s", diagTlv.mData.mVendorName);
|
||||
break;
|
||||
|
||||
@@ -267,6 +267,15 @@ Error Server::AppendDiagTlv(uint8_t aTlvType, Message &aMessage)
|
||||
error = Tlv::Append<ModeTlv>(aMessage, Get<Mle::MleRouter>().GetDeviceMode().Get());
|
||||
break;
|
||||
|
||||
case Tlv::kEui64:
|
||||
{
|
||||
Mac::ExtAddress eui64;
|
||||
|
||||
Get<Radio>().GetIeeeEui64(eui64);
|
||||
error = Tlv::Append<Eui64Tlv>(aMessage, eui64);
|
||||
break;
|
||||
}
|
||||
|
||||
case Tlv::kVersion:
|
||||
error = Tlv::Append<VersionTlv>(aMessage, kThreadVersion);
|
||||
break;
|
||||
@@ -1196,6 +1205,10 @@ Error Client::GetNextDiagTlv(const Coap::Message &aMessage, Iterator &aIterator,
|
||||
SuccessOrExit(error = Tlv::Read<MaxChildTimeoutTlv>(aMessage, offset, aTlvInfo.mData.mMaxChildTimeout));
|
||||
break;
|
||||
|
||||
case Tlv::kEui64:
|
||||
SuccessOrExit(error = Tlv::Read<Eui64Tlv>(aMessage, offset, AsCoreType(&aTlvInfo.mData.mEui64)));
|
||||
break;
|
||||
|
||||
case Tlv::kVersion:
|
||||
SuccessOrExit(error = Tlv::Read<VersionTlv>(aMessage, offset, aTlvInfo.mData.mVersion));
|
||||
break;
|
||||
|
||||
@@ -84,6 +84,7 @@ public:
|
||||
kChannelPages = OT_NETWORK_DIAGNOSTIC_TLV_CHANNEL_PAGES,
|
||||
kTypeList = OT_NETWORK_DIAGNOSTIC_TLV_TYPE_LIST,
|
||||
kMaxChildTimeout = OT_NETWORK_DIAGNOSTIC_TLV_MAX_CHILD_TIMEOUT,
|
||||
kEui64 = OT_NETWORK_DIAGNOSTIC_TLV_EUI64,
|
||||
kVersion = OT_NETWORK_DIAGNOSTIC_TLV_VERSION,
|
||||
kVendorName = OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_NAME,
|
||||
kVendorModel = OT_NETWORK_DIAGNOSTIC_TLV_VENDOR_MODEL,
|
||||
@@ -199,6 +200,12 @@ typedef TlvInfo<Tlv::kChildTable> ChildTableTlv;
|
||||
*/
|
||||
typedef UintTlvInfo<Tlv::kMaxChildTimeout, uint32_t> MaxChildTimeoutTlv;
|
||||
|
||||
/**
|
||||
* Defines Eui64 TLV constants and types.
|
||||
*
|
||||
*/
|
||||
typedef SimpleTlvInfo<Tlv::kEui64, Mac::ExtAddress> Eui64Tlv;
|
||||
|
||||
/**
|
||||
* Defines Version TLV constants and types.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user