From d45f2b9847c7b3befd194947f1ac6e8f63249f5c Mon Sep 17 00:00:00 2001 From: Przemyslaw Bida Date: Thu, 5 Dec 2024 13:07:23 +0100 Subject: [PATCH] [diag] Add new command to factory diags. Commit adds new command to factory diag called `linkraw`. this command is intended to manipulate state of radio interface in diag mode of the device. --- src/core/diags/factory_diags.cpp | 31 +++++++++++++++++++++++++++++++ src/core/diags/factory_diags.hpp | 3 +++ 2 files changed, 34 insertions(+) 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[]);