diff --git a/src/core/diags/factory_diags.cpp b/src/core/diags/factory_diags.cpp index 38e43e704..e8595ad3b 100644 --- a/src/core/diags/factory_diags.cpp +++ b/src/core/diags/factory_diags.cpp @@ -220,7 +220,7 @@ void Diags::ResetTxPacket(void) mTxPacket->mInfo.mTxInfo.mMaxCsmaBackoffs = 0; mTxPacket->mInfo.mTxInfo.mMaxFrameRetries = 0; mTxPacket->mInfo.mTxInfo.mRxChannelAfterTxDone = mChannel; - mTxPacket->mInfo.mTxInfo.mTxPower = OT_RADIO_POWER_INVALID; + mTxPacket->mInfo.mTxInfo.mTxPower = Radio::kInvalidPower; mTxPacket->mInfo.mTxInfo.mIsHeaderUpdated = false; mTxPacket->mInfo.mTxInfo.mIsARetx = false; mTxPacket->mInfo.mTxInfo.mCsmaCaEnabled = false; @@ -230,11 +230,11 @@ void Diags::ResetTxPacket(void) Error Diags::ProcessFrame(uint8_t aArgsLength, char *aArgs[]) { Error error = kErrorNone; - uint16_t size = OT_RADIO_FRAME_MAX_SIZE; + uint16_t size = Radio::kFrameMaxSize; bool securityProcessed = false; bool csmaCaEnabled = false; bool isHeaderUpdated = false; - int8_t txPower = OT_RADIO_POWER_INVALID; + int8_t txPower = Radio::kInvalidPower; uint8_t maxFrameRetries = 0; uint8_t maxCsmaBackoffs = 0; uint8_t rxChannelAfterTxDone = mChannel; @@ -310,8 +310,7 @@ Error Diags::ProcessFrame(uint8_t aArgsLength, char *aArgs[]) VerifyOrExit(aArgsLength == 1, error = kErrorInvalidArgs); SuccessOrExit(error = Utils::CmdLineParser::ParseAsHexString(aArgs[0], size, mTxPacket->mPsdu)); - VerifyOrExit(size <= OT_RADIO_FRAME_MAX_SIZE, error = kErrorInvalidArgs); - VerifyOrExit(size >= OT_RADIO_FRAME_MIN_SIZE, error = kErrorInvalidArgs); + VerifyOrExit(IsFrameLengthValid(size), error = kErrorInvalidArgs); ResetTxPacket(); mTxPacket->mInfo.mTxInfo.mCsmaCaEnabled = csmaCaEnabled; @@ -417,8 +416,7 @@ Error Diags::ProcessRepeat(uint8_t aArgsLength, char *aArgs[]) ExitNow(error = kErrorInvalidArgs); } - VerifyOrExit((txLength >= OT_RADIO_FRAME_MIN_SIZE) && (txLength <= OT_RADIO_FRAME_MAX_SIZE), - error = kErrorInvalidArgs); + VerifyOrExit(IsFrameLengthValid(txLength), error = kErrorInvalidArgs); mTxLen = txLength; mCurTxCmd = kTxCmdRepeat; @@ -467,8 +465,7 @@ Error Diags::ProcessSend(uint8_t aArgsLength, char *aArgs[]) ExitNow(error = kErrorInvalidArgs); } - VerifyOrExit(txLength <= OT_RADIO_FRAME_MAX_SIZE, error = kErrorInvalidArgs); - VerifyOrExit(txLength >= OT_RADIO_FRAME_MIN_SIZE, error = kErrorInvalidArgs); + VerifyOrExit(IsFrameLengthValid(txLength), error = kErrorInvalidArgs); mTxLen = txLength; SuccessOrExit(error = TransmitPacket()); @@ -578,9 +575,7 @@ Error Diags::ProcessSweep(uint8_t aArgsLength, char *aArgs[]) } SuccessOrExit(error = Utils::CmdLineParser::ParseAsUint8(aArgs[0], txLength)); - - VerifyOrExit(txLength <= OT_RADIO_FRAME_MAX_SIZE, error = kErrorInvalidArgs); - VerifyOrExit(txLength >= OT_RADIO_FRAME_MIN_SIZE, error = kErrorInvalidArgs); + VerifyOrExit(IsFrameLengthValid(txLength), error = kErrorInvalidArgs); mTxLen = txLength; mIsTxPacketSet = false; @@ -1193,6 +1188,11 @@ bool Diags::IsChannelValid(uint8_t aChannel) return (aChannel >= Radio::kChannelMin && aChannel <= Radio::kChannelMax); } +bool Diags::IsFrameLengthValid(uint16_t aLength) +{ + return (aLength >= Radio::kFrameMinSize) && (aLength <= Radio::kFrameMaxSize); +} + Error Diags::ParseCmd(char *aString, uint8_t &aArgsLength, char *aArgs[]) { Error error; diff --git a/src/core/diags/factory_diags.hpp b/src/core/diags/factory_diags.hpp index 7dcae3048..71b262f6c 100644 --- a/src/core/diags/factory_diags.hpp +++ b/src/core/diags/factory_diags.hpp @@ -244,6 +244,7 @@ private: void UpdateTxStats(Error aError); static bool IsChannelValid(uint8_t aChannel); + static bool IsFrameLengthValid(uint16_t aLength); static const struct Command sCommands[]; diff --git a/src/core/radio/radio.hpp b/src/core/radio/radio.hpp index 2c97ab14a..1c2b900a3 100644 --- a/src/core/radio/radio.hpp +++ b/src/core/radio/radio.hpp @@ -121,12 +121,17 @@ public: static constexpr uint8_t kChannelMax = OPENTHREAD_CONFIG_PLATFORM_RADIO_PROPRIETARY_CHANNEL_MAX; #endif + static constexpr uint8_t kFrameMinSize = OT_RADIO_FRAME_MIN_SIZE; + static constexpr uint8_t kFrameMaxSize = OT_RADIO_FRAME_MAX_SIZE; + static const uint8_t kSupportedChannelPages[kNumChannelPages]; static constexpr int8_t kInvalidRssi = OT_RADIO_RSSI_INVALID; ///< Invalid RSSI value. static constexpr int8_t kDefaultReceiveSensitivity = -110; ///< Default receive sensitivity (in dBm). + static constexpr int8_t kInvalidPower = OT_RADIO_POWER_INVALID; + static_assert((OPENTHREAD_CONFIG_RADIO_2P4GHZ_OQPSK_SUPPORT || OPENTHREAD_CONFIG_RADIO_915MHZ_OQPSK_SUPPORT || OPENTHREAD_CONFIG_PLATFORM_RADIO_PROPRIETARY_SUPPORT), "OPENTHREAD_CONFIG_RADIO_2P4GHZ_OQPSK_SUPPORT "