diff --git a/include/openthread/netdiag.h b/include/openthread/netdiag.h index 1ff14953d..b35e95ef6 100644 --- a/include/openthread/netdiag.h +++ b/include/openthread/netdiag.h @@ -239,26 +239,26 @@ typedef struct otNetworkDiagTlv uint32_t mMaxChildTimeout; struct { - uint8_t mNetworkDataCount; - uint8_t mNetworkData[OT_NETWORK_BASE_TLV_MAX_LENGTH]; - }; + uint8_t mCount; + uint8_t m8[OT_NETWORK_BASE_TLV_MAX_LENGTH]; + } mNetworkData; struct { - uint8_t mIp6AddrCount; - otIp6Address mIp6AddrList[OT_NETWORK_BASE_TLV_MAX_LENGTH / OT_IP6_ADDRESS_SIZE]; - }; + uint8_t mCount; + otIp6Address mList[OT_NETWORK_BASE_TLV_MAX_LENGTH / OT_IP6_ADDRESS_SIZE]; + } mIp6AddrList; struct { - uint8_t mChildCount; + uint8_t mCount; otNetworkDiagChildEntry - mChildTable[OT_NETWORK_BASE_TLV_MAX_LENGTH / OT_NETWORK_DIAGNOSTIC_CHILD_TABLE_ENTRY_SIZE]; - }; + mTable[OT_NETWORK_BASE_TLV_MAX_LENGTH / OT_NETWORK_DIAGNOSTIC_CHILD_TABLE_ENTRY_SIZE]; + } mChildTable; struct { - uint8_t mChannelPageCount; - uint8_t mChannelPages[OT_NETWORK_BASE_TLV_MAX_LENGTH]; - }; - }; + uint8_t mCount; + uint8_t m8[OT_NETWORK_BASE_TLV_MAX_LENGTH]; + } mChannelPages; + } mData; } otNetworkDiagTlv; /** diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 67ed74095..c1115602c 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -3907,72 +3907,72 @@ void Interpreter::HandleDiagnosticGetResponse(const otMessage &aMessage, const I { case OT_NETWORK_DIAGNOSTIC_TLV_EXT_ADDRESS: mServer->OutputFormat("Ext Address: '"); - OutputBytes(diagTlv.mExtAddress.m8, sizeof(diagTlv.mExtAddress.m8)); + OutputBytes(diagTlv.mData.mExtAddress.m8, sizeof(diagTlv.mData.mExtAddress.m8)); mServer->OutputFormat("'\r\n"); break; case OT_NETWORK_DIAGNOSTIC_TLV_SHORT_ADDRESS: - mServer->OutputFormat("Rloc16: 0x%04x\r\n", diagTlv.mAddr16); + mServer->OutputFormat("Rloc16: 0x%04x\r\n", diagTlv.mData.mAddr16); break; case OT_NETWORK_DIAGNOSTIC_TLV_MODE: mServer->OutputFormat("Mode:\r\n"); - OutputMode(diagTlv.mMode, column + INDENT_SIZE); + OutputMode(diagTlv.mData.mMode, column + INDENT_SIZE); break; case OT_NETWORK_DIAGNOSTIC_TLV_TIMEOUT: - mServer->OutputFormat("Timeout: %u\r\n", diagTlv.mTimeout); + mServer->OutputFormat("Timeout: %u\r\n", diagTlv.mData.mTimeout); break; case OT_NETWORK_DIAGNOSTIC_TLV_CONNECTIVITY: mServer->OutputFormat("Connectivity:\r\n"); - OutputConnectivity(diagTlv.mConnectivity, column + INDENT_SIZE); + OutputConnectivity(diagTlv.mData.mConnectivity, column + INDENT_SIZE); break; case OT_NETWORK_DIAGNOSTIC_TLV_ROUTE: mServer->OutputFormat("Route:\r\n"); - OutputRoute(diagTlv.mRoute, column + INDENT_SIZE); + OutputRoute(diagTlv.mData.mRoute, column + INDENT_SIZE); break; case OT_NETWORK_DIAGNOSTIC_TLV_LEADER_DATA: mServer->OutputFormat("Leader Data:\r\n"); - OutputLeaderData(diagTlv.mLeaderData, column + INDENT_SIZE); + OutputLeaderData(diagTlv.mData.mLeaderData, column + INDENT_SIZE); break; case OT_NETWORK_DIAGNOSTIC_TLV_NETWORK_DATA: mServer->OutputFormat("Network Data: '"); - OutputBytes(diagTlv.mNetworkData, diagTlv.mNetworkDataCount); + OutputBytes(diagTlv.mData.mNetworkData.m8, diagTlv.mData.mNetworkData.mCount); mServer->OutputFormat("'\r\n"); break; case OT_NETWORK_DIAGNOSTIC_TLV_IP6_ADDR_LIST: mServer->OutputFormat("IP6 Address List:\r\n"); - for (uint16_t i = 0; i < diagTlv.mIp6AddrCount; ++i) + for (uint16_t i = 0; i < diagTlv.mData.mIp6AddrList.mCount; ++i) { OutputSpaces(column + INDENT_SIZE); mServer->OutputFormat("- "); - OutputIp6Address(diagTlv.mIp6AddrList[i]); + OutputIp6Address(diagTlv.mData.mIp6AddrList.mList[i]); mServer->OutputFormat("\r\n"); } break; case OT_NETWORK_DIAGNOSTIC_TLV_MAC_COUNTERS: mServer->OutputFormat("MAC Counters:\r\n"); - OutputNetworkDiagMacCounters(diagTlv.mMacCounters, column + INDENT_SIZE); + OutputNetworkDiagMacCounters(diagTlv.mData.mMacCounters, column + INDENT_SIZE); break; case OT_NETWORK_DIAGNOSTIC_TLV_BATTERY_LEVEL: - mServer->OutputFormat("Battery Level: %u%%\r\n", diagTlv.mBatteryLevel); + mServer->OutputFormat("Battery Level: %u%%\r\n", diagTlv.mData.mBatteryLevel); break; case OT_NETWORK_DIAGNOSTIC_TLV_SUPPLY_VOLTAGE: - mServer->OutputFormat("Supply Voltage: %umV\r\n", diagTlv.mSupplyVoltage); + mServer->OutputFormat("Supply Voltage: %umV\r\n", diagTlv.mData.mSupplyVoltage); break; case OT_NETWORK_DIAGNOSTIC_TLV_CHILD_TABLE: mServer->OutputFormat("Child Table:\r\n"); - for (uint16_t i = 0; i < diagTlv.mChildCount; ++i) + for (uint16_t i = 0; i < diagTlv.mData.mChildTable.mCount; ++i) { OutputSpaces(column + INDENT_SIZE); mServer->OutputFormat("- "); - OutputChildTableEntry(diagTlv.mChildTable[i], column + INDENT_SIZE + 2); + OutputChildTableEntry(diagTlv.mData.mChildTable.mTable[i], column + INDENT_SIZE + 2); } break; case OT_NETWORK_DIAGNOSTIC_TLV_CHANNEL_PAGES: mServer->OutputFormat("Channel Pages: '"); - OutputBytes(diagTlv.mChannelPages, diagTlv.mChannelPageCount); + OutputBytes(diagTlv.mData.mChannelPages.m8, diagTlv.mData.mChannelPages.mCount); mServer->OutputFormat("'\r\n"); break; case OT_NETWORK_DIAGNOSTIC_TLV_MAX_CHILD_TIMEOUT: - mServer->OutputFormat("Max Child Timeout: %u\r\n", diagTlv.mMaxChildTimeout); + mServer->OutputFormat("Max Child Timeout: %u\r\n", diagTlv.mData.mMaxChildTimeout); break; } } diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index b8407a1f0..4fec0c15e 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -818,7 +818,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &extMacAddr) == tlvTotalLength); VerifyOrExit(extMacAddr.IsValid()); - aNetworkDiagTlv.mExtAddress = *extMacAddr.GetMacAddr(); + aNetworkDiagTlv.mData.mExtAddress = *extMacAddr.GetMacAddr(); ExitNow(error = OT_ERROR_NONE); break; } @@ -831,7 +831,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &addr16) == tlvTotalLength); VerifyOrExit(addr16.IsValid()); - aNetworkDiagTlv.mAddr16 = addr16.GetRloc16(); + aNetworkDiagTlv.mData.mAddr16 = addr16.GetRloc16(); ExitNow(error = OT_ERROR_NONE); break; } @@ -844,7 +844,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &linkMode) == tlvTotalLength); VerifyOrExit(linkMode.IsValid()); - ParseMode(linkMode.GetMode(), aNetworkDiagTlv.mMode); + ParseMode(linkMode.GetMode(), aNetworkDiagTlv.mData.mMode); ExitNow(error = OT_ERROR_NONE); break; } @@ -857,7 +857,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &timeout) == tlvTotalLength); VerifyOrExit(timeout.IsValid()); - aNetworkDiagTlv.mTimeout = timeout.GetTimeout(); + aNetworkDiagTlv.mData.mTimeout = timeout.GetTimeout(); ExitNow(error = OT_ERROR_NONE); break; } @@ -870,7 +870,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &connectivity) == tlvTotalLength); VerifyOrExit(connectivity.IsValid()); - ParseConnectivity(connectivity, aNetworkDiagTlv.mConnectivity); + ParseConnectivity(connectivity, aNetworkDiagTlv.mData.mConnectivity); ExitNow(error = OT_ERROR_NONE); break; } @@ -884,7 +884,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &route) == tlvTotalLength); VerifyOrExit(route.IsValid()); - ParseRoute(route, aNetworkDiagTlv.mRoute); + ParseRoute(route, aNetworkDiagTlv.mData.mRoute); ExitNow(error = OT_ERROR_NONE); break; } @@ -897,7 +897,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &leaderData) == tlvTotalLength); VerifyOrExit(leaderData.IsValid()); - ParseLeaderData(leaderData, aNetworkDiagTlv.mLeaderData); + ParseLeaderData(leaderData, aNetworkDiagTlv.mData.mLeaderData); ExitNow(error = OT_ERROR_NONE); break; } @@ -910,10 +910,10 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(tlvTotalLength <= sizeof(networkData)); VerifyOrExit(message.Read(offset, tlvTotalLength, &networkData) == tlvTotalLength); VerifyOrExit(networkData.IsValid()); - VerifyOrExit(sizeof(aNetworkDiagTlv.mNetworkData) >= networkData.GetLength()); + VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mNetworkData.m8) >= networkData.GetLength()); - memcpy(aNetworkDiagTlv.mNetworkData, networkData.GetNetworkData(), networkData.GetLength()); - aNetworkDiagTlv.mNetworkDataCount = networkData.GetLength(); + memcpy(aNetworkDiagTlv.mData.mNetworkData.m8, networkData.GetNetworkData(), networkData.GetLength()); + aNetworkDiagTlv.mData.mNetworkData.mCount = networkData.GetLength(); ExitNow(error = OT_ERROR_NONE); break; } @@ -923,11 +923,11 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, Ip6AddressListTlv &ip6AddrList = static_cast(tlv); VerifyOrExit(ip6AddrList.IsValid()); - VerifyOrExit(sizeof(aNetworkDiagTlv.mIp6AddrList) >= ip6AddrList.GetLength()); + VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mIp6AddrList.mList) >= ip6AddrList.GetLength()); VerifyOrExit(message.Read(offset + sizeof(ip6AddrList), ip6AddrList.GetLength(), - aNetworkDiagTlv.mIp6AddrList) == ip6AddrList.GetLength()); + aNetworkDiagTlv.mData.mIp6AddrList.mList) == ip6AddrList.GetLength()); - aNetworkDiagTlv.mIp6AddrCount = ip6AddrList.GetLength() / OT_IP6_ADDRESS_SIZE; + aNetworkDiagTlv.mData.mIp6AddrList.mCount = ip6AddrList.GetLength() / OT_IP6_ADDRESS_SIZE; ExitNow(error = OT_ERROR_NONE); break; } @@ -940,7 +940,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &macCounters) == tlvTotalLength); VerifyOrExit(macCounters.IsValid()); - ParseMacCounters(macCounters, aNetworkDiagTlv.mMacCounters); + ParseMacCounters(macCounters, aNetworkDiagTlv.mData.mMacCounters); ExitNow(error = OT_ERROR_NONE); break; } @@ -953,7 +953,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &batteryLevel) == tlvTotalLength); VerifyOrExit(batteryLevel.IsValid()); - aNetworkDiagTlv.mBatteryLevel = batteryLevel.GetBatteryLevel(); + aNetworkDiagTlv.mData.mBatteryLevel = batteryLevel.GetBatteryLevel(); ExitNow(error = OT_ERROR_NONE); break; } @@ -966,7 +966,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &supplyVoltage) == tlvTotalLength); VerifyOrExit(supplyVoltage.IsValid()); - aNetworkDiagTlv.mSupplyVoltage = supplyVoltage.GetSupplyVoltage(); + aNetworkDiagTlv.mData.mSupplyVoltage = supplyVoltage.GetSupplyVoltage(); ExitNow(error = OT_ERROR_NONE); break; } @@ -976,26 +976,26 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, ChildTableTlv &childTable = static_cast(tlv); VerifyOrExit(childTable.IsValid()); - VerifyOrExit(childTable.GetNumEntries() <= OT_ARRAY_LENGTH(aNetworkDiagTlv.mChildTable)); + VerifyOrExit(childTable.GetNumEntries() <= OT_ARRAY_LENGTH(aNetworkDiagTlv.mData.mChildTable.mTable)); for (uint8_t i = 0; i < childTable.GetNumEntries(); ++i) { ChildTableEntry childEntry; VerifyOrExit(childTable.ReadEntry(childEntry, message, offset, i) == OT_ERROR_NONE); - ParseChildEntry(childEntry, aNetworkDiagTlv.mChildTable[i]); + ParseChildEntry(childEntry, aNetworkDiagTlv.mData.mChildTable.mTable[i]); } - aNetworkDiagTlv.mChildCount = childTable.GetNumEntries(); + aNetworkDiagTlv.mData.mChildTable.mCount = childTable.GetNumEntries(); ExitNow(error = OT_ERROR_NONE); break; } case NetworkDiagnosticTlv::kChannelPages: { - VerifyOrExit(sizeof(aNetworkDiagTlv.mChannelPages) >= tlv.GetLength()); - VerifyOrExit(message.Read(offset + sizeof(tlv), tlv.GetLength(), aNetworkDiagTlv.mChannelPages) == + VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mChannelPages.m8) >= tlv.GetLength()); + VerifyOrExit(message.Read(offset + sizeof(tlv), tlv.GetLength(), aNetworkDiagTlv.mData.mChannelPages.m8) == tlv.GetLength()); - aNetworkDiagTlv.mChannelPageCount = tlv.GetLength(); + aNetworkDiagTlv.mData.mChannelPages.mCount = tlv.GetLength(); ExitNow(error = OT_ERROR_NONE); break; } @@ -1008,7 +1008,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage, VerifyOrExit(message.Read(offset, tlvTotalLength, &maxChildTimeout) == tlvTotalLength); VerifyOrExit(maxChildTimeout.IsValid()); - aNetworkDiagTlv.mMaxChildTimeout = maxChildTimeout.GetTimeout(); + aNetworkDiagTlv.mData.mMaxChildTimeout = maxChildTimeout.GetTimeout(); ExitNow(error = OT_ERROR_NONE); break; }