From 915261b36b256234ef6b40f6cbad69f036851385 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Tue, 30 May 2017 09:56:22 -0700 Subject: [PATCH] NcpBase: Replace type strings with spinel data type definitions (#1844) --- src/ncp/ncp_base.cpp | 129 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 104 insertions(+), 25 deletions(-) diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index 6f5cde85a..611ad7820 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -826,11 +826,11 @@ void NcpBase::HandleRawFrame(const otRadioFrame *aFrame) SPINEL_DATATYPE_INT8_S SPINEL_DATATYPE_INT8_S SPINEL_DATATYPE_UINT16_S - SPINEL_DATATYPE_STRUCT_S( // PHY-data - "" // Empty for now + SPINEL_DATATYPE_STRUCT_S( // PHY-data + SPINEL_DATATYPE_NULL_S // Empty for now ) - SPINEL_DATATYPE_STRUCT_S( // Vendor-data - "" // Empty for now + SPINEL_DATATYPE_STRUCT_S( // Vendor-data + SPINEL_DATATYPE_NULL_S // Empty for now ), aFrame->mPower, // TX Power -128, // Noise Floor (Currently unused) @@ -933,7 +933,10 @@ void NcpBase::HandleEnergyScanResult(otEnergyScanResult *aResult) SPINEL_HEADER_FLAG | SPINEL_HEADER_IID_0, SPINEL_CMD_PROP_VALUE_INSERTED, SPINEL_PROP_MAC_ENERGY_SCAN_RESULT, - "Cc", + ( + SPINEL_DATATYPE_UINT8_S // Channel + SPINEL_DATATYPE_INT8_S // Rssi + ), aResult->mChannel, aResult->mMaxRssi ); @@ -1948,7 +1951,10 @@ otError NcpBase::GetPropertyHandler_PROTOCOL_VERSION(uint8_t header, spinel_prop header, SPINEL_CMD_PROP_VALUE_IS, key, - SPINEL_DATATYPE_UINT_PACKED_S SPINEL_DATATYPE_UINT_PACKED_S, + ( + SPINEL_DATATYPE_UINT_PACKED_S // Major + SPINEL_DATATYPE_UINT_PACKED_S // Minor + ), SPINEL_PROTOCOL_VERSION_THREAD_MAJOR, SPINEL_PROTOCOL_VERSION_THREAD_MINOR ); @@ -2716,7 +2722,10 @@ otError NcpBase::GetPropertyHandler_THREAD_PARENT(uint8_t header, spinel_prop_ke header, SPINEL_CMD_PROP_VALUE_IS, key, - SPINEL_DATATYPE_EUI64_S SPINEL_DATATYPE_UINT16_S, + ( + SPINEL_DATATYPE_EUI64_S // Parent's extended address + SPINEL_DATATYPE_UINT16_S // Parent's rloc16 + ), parentInfo.mExtAddress.m8, parentInfo.mRloc16 ); @@ -2897,7 +2906,7 @@ otError NcpBase::GetPropertyHandler_THREAD_ASSISTING_PORTS(uint8_t header, spine for (; num_entries != 0; ports++, num_entries--) { - SuccessOrExit(errorCode = OutboundFrameFeedPacked("S", *ports)); + SuccessOrExit(errorCode = OutboundFrameFeedPacked(SPINEL_DATATYPE_UINT16_S, *ports)); } SuccessOrExit(errorCode = OutboundFrameSend()); @@ -3061,7 +3070,10 @@ otError NcpBase::GetPropertyHandler_IPV6_ML_PREFIX(uint8_t header, spinel_prop_k header, SPINEL_CMD_PROP_VALUE_IS, key, - SPINEL_DATATYPE_IPv6ADDR_S SPINEL_DATATYPE_UINT8_S, + ( + SPINEL_DATATYPE_IPv6ADDR_S // Mesh-local IPv6 address + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + ), &addr, 64 ); @@ -3135,7 +3147,12 @@ otError NcpBase::GetPropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel_pr SuccessOrExit( errorCode = OutboundFrameFeedPacked( - SPINEL_DATATYPE_STRUCT_S("6CLL"), + SPINEL_DATATYPE_STRUCT_S( + SPINEL_DATATYPE_IPv6ADDR_S // IPv6 address + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + SPINEL_DATATYPE_UINT32_S // Preferred lifetime + SPINEL_DATATYPE_UINT32_S // Valid lifetime + ), &address->mAddress, address->mPrefixLength, address->mPreferred ? 0xffffffff : 0, @@ -3336,7 +3353,10 @@ otError NcpBase::GetPropertyHandler_JAM_DETECT_HISTORY_BITMAP(uint8_t header, sp header, SPINEL_CMD_PROP_VALUE_IS, key, - SPINEL_DATATYPE_UINT32_S SPINEL_DATATYPE_UINT32_S, + ( + SPINEL_DATATYPE_UINT32_S // History bitmap - bits 0-31 + SPINEL_DATATYPE_UINT32_S // History bitmap - bits 32-63 + ), static_cast(historyBitmap & 0xffffffff), static_cast(historyBitmap >> 32) ); @@ -3580,7 +3600,25 @@ otError NcpBase::GetPropertyHandler_MSG_BUFFER_COUNTERS(uint8_t header, spinel_p )); SuccessOrExit( - errorCode = OutboundFrameFeedPacked("SSSSSSSSSSSSSSSS", + errorCode = OutboundFrameFeedPacked( + ( + SPINEL_DATATYPE_UINT16_S // Total buffers + SPINEL_DATATYPE_UINT16_S // Free buffers + SPINEL_DATATYPE_UINT16_S // Lowpan send messages + SPINEL_DATATYPE_UINT16_S // Lowpan send buffers + SPINEL_DATATYPE_UINT16_S // Lowpan reassembly messages + SPINEL_DATATYPE_UINT16_S // Lowpan reassembly buffers + SPINEL_DATATYPE_UINT16_S // Ip6 messages + SPINEL_DATATYPE_UINT16_S // Ip6 buffers + SPINEL_DATATYPE_UINT16_S // Mpl messages + SPINEL_DATATYPE_UINT16_S // Mpl buffers + SPINEL_DATATYPE_UINT16_S // Mle messages + SPINEL_DATATYPE_UINT16_S // Mle buffers + SPINEL_DATATYPE_UINT16_S // Arp messages + SPINEL_DATATYPE_UINT16_S // Arp buffers + SPINEL_DATATYPE_UINT16_S // Coap messages + SPINEL_DATATYPE_UINT16_S // Coap buffers + ), bufferInfo.mTotalBuffers, bufferInfo.mFreeBuffers, bufferInfo.m6loSendMessages, @@ -3693,7 +3731,10 @@ otError NcpBase::GetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_prop_ke SuccessOrExit( errorCode = OutboundFrameFeedPacked( - SPINEL_DATATYPE_STRUCT_S("Ec"), + SPINEL_DATATYPE_STRUCT_S( + SPINEL_DATATYPE_EUI64_S // Extended address + SPINEL_DATATYPE_INT8_S // Rssi + ), entry.mExtAddress.m8, entry.mRssi )); @@ -5030,7 +5071,10 @@ otError NcpBase::SetPropertyHandler_STREAM_NET_INSECURE(uint8_t header, spinel_p parsedLength = spinel_datatype_unpack( value_ptr, value_len, - SPINEL_DATATYPE_DATA_WLEN_S SPINEL_DATATYPE_DATA_S, + ( + SPINEL_DATATYPE_DATA_WLEN_S // Frame data + SPINEL_DATATYPE_DATA_S // Meta data + ), &frame_ptr, &frame_len, &meta_ptr, @@ -5104,7 +5148,11 @@ otError NcpBase::SetPropertyHandler_THREAD_BA_PROXY_STREAM(uint8_t header, spine parsedLength = spinel_datatype_unpack( value_ptr, value_len, - SPINEL_DATATYPE_DATA_WLEN_S SPINEL_DATATYPE_UINT16_S SPINEL_DATATYPE_UINT16_S, + ( + SPINEL_DATATYPE_DATA_WLEN_S // Frame data + SPINEL_DATATYPE_UINT16_S // Locator + SPINEL_DATATYPE_UINT16_S // Port + ), &frame_ptr, &frame_len, &locator, @@ -5172,7 +5220,10 @@ otError NcpBase::SetPropertyHandler_STREAM_NET(uint8_t header, spinel_prop_key_t parsedLength = spinel_datatype_unpack( value_ptr, value_len, - SPINEL_DATATYPE_DATA_WLEN_S SPINEL_DATATYPE_DATA_S, + ( + SPINEL_DATATYPE_DATA_WLEN_S // Frame data + SPINEL_DATATYPE_DATA_S // Meta data + ), &frame_ptr, &frame_len, &meta_ptr, @@ -5419,7 +5470,7 @@ otError NcpBase::SetPropertyHandler_THREAD_ASSISTING_PORTS(uint8_t header, spine parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "S", + SPINEL_DATATYPE_UINT16_S, &port ); @@ -6715,7 +6766,12 @@ otError NcpBase::InsertPropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6CLL", + ( + SPINEL_DATATYPE_IPv6ADDR_S // IPv6 address + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + SPINEL_DATATYPE_UINT32_S // Preferred lifetime + SPINEL_DATATYPE_UINT32_S // Valid lifetime + ), &addr_ptr, &prefix_len, &preferred_lifetime, @@ -6775,7 +6831,12 @@ otError NcpBase::InsertPropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, sp parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6CbC", + ( + SPINEL_DATATYPE_IPv6ADDR_S // Route prefix + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + SPINEL_DATATYPE_BOOL_S // Stable + SPINEL_DATATYPE_UINT8_S // Flags + ), &addr_ptr, &ext_route_config.mPrefix.mLength, &stable, @@ -6834,7 +6895,12 @@ otError NcpBase::InsertPropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spine parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6CbC", + ( + SPINEL_DATATYPE_IPv6ADDR_S // On-mesh prefix + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + SPINEL_DATATYPE_BOOL_S // Stable + SPINEL_DATATYPE_UINT8_S // Flags + ), &addr_ptr, &border_router_config.mPrefix.mLength, &stable, @@ -7003,7 +7069,11 @@ otError NcpBase::InsertPropertyHandler_THREAD_JOINERS(uint8_t header, spinel_pro parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "ULE", + ( + SPINEL_DATATYPE_UTF8_S // PSK + SPINEL_DATATYPE_UINT32_S // Timeout + SPINEL_DATATYPE_EUI64_S // Extended address + ), &aPSKd, &joiner_timeout, &ot_ext_address @@ -7014,7 +7084,10 @@ otError NcpBase::InsertPropertyHandler_THREAD_JOINERS(uint8_t header, spinel_pro parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "UL", + ( + SPINEL_DATATYPE_UTF8_S // PSK + SPINEL_DATATYPE_UINT32_S // Timeout + ), &aPSKd, &joiner_timeout ); @@ -7150,7 +7223,7 @@ otError NcpBase::RemovePropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6", + SPINEL_DATATYPE_IPv6ADDR_S, &addr_ptr ); @@ -7199,7 +7272,10 @@ otError NcpBase::RemovePropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, sp parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6C", + ( + SPINEL_DATATYPE_IPv6ADDR_S // Route prefix + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + ), &addr_ptr, &ip6_prefix.mLength ); @@ -7251,7 +7327,10 @@ otError NcpBase::RemovePropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spine parsedLength = spinel_datatype_unpack( value_ptr, value_len, - "6C", + ( + SPINEL_DATATYPE_IPv6ADDR_S // On-mesh prefix + SPINEL_DATATYPE_UINT8_S // Prefix length (in bits) + ), &addr_ptr, &ip6_prefix.mLength );