diff --git a/src/core/diags/factory_diags.cpp b/src/core/diags/factory_diags.cpp index ab88579f34db..1f772c145618 100644 --- a/src/core/diags/factory_diags.cpp +++ b/src/core/diags/factory_diags.cpp @@ -186,6 +186,9 @@ const struct Diags::Command Diags::sCommands[] = { {"powersettings", &Diags::ProcessPowerSettings}, {"rawpowersetting", &Diags::ProcessRawPowerSetting}, {"radio", &Diags::ProcessRadio}, +#if !OPENTHREAD_RADIO + {"linkraw", &Diags::ProcessLinkRaw}, +#endif {"repeat", &Diags::ProcessRepeat}, {"send", &Diags::ProcessSend}, {"start", &Diags::ProcessStart}, @@ -650,6 +653,34 @@ void Diags::TransmitDone(Error aError) #endif // OPENTHREAD_RADIO +#if !OPENTHREAD_RADIO +Error Diags::ProcessLinkRaw(uint8_t aArgsLength, char *aArgs[]) +{ + Error error = kErrorNone; + + if (aArgsLength == 0) + { + Output("raw link is %s\r\n", otPlatRadioIsEnabled(&GetInstance()) ? "enabled" : "disabled"); + } + else if (strcmp(aArgs[0], "start") == 0) + { + error = otPlatRadioEnable(&GetInstance()); + Output("raw link started\r\n"); + } + else if (strcmp(aArgs[0], "stop") == 0) + { + error = otPlatRadioEnable(&GetInstance()); + Output("raw link stopped\r\n"); + } + else + { + error = kErrorInvalidCommand; + } + + return error; +} +#endif // !OPENTHREAD_RADIO + Error Diags::ProcessContinuousWave(uint8_t aArgsLength, char *aArgs[]) { Error error = kErrorInvalidArgs; diff --git a/src/core/diags/factory_diags.hpp b/src/core/diags/factory_diags.hpp index a3f87042c2c3..40d5aa3e2e00 100644 --- a/src/core/diags/factory_diags.hpp +++ b/src/core/diags/factory_diags.hpp @@ -184,6 +184,9 @@ class Diags : public InstanceLocator, private NonCopyable Error ProcessGpio(uint8_t aArgsLength, char *aArgs[]); Error ProcessPower(uint8_t aArgsLength, char *aArgs[]); Error ProcessRadio(uint8_t aArgsLength, char *aArgs[]); +#if !OPENTHREAD_RADIO + Error ProcessLinkRaw(uint8_t aArgsLength, char *aArgs[]); +#endif Error ProcessRepeat(uint8_t aArgsLength, char *aArgs[]); Error ProcessPowerSettings(uint8_t aArgsLength, char *aArgs[]); Error ProcessRawPowerSetting(uint8_t aArgsLength, char *aArgs[]);