From c8ef4b6a7c0668beb5a70e5f4024f804e1bbe32d Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Tue, 2 Mar 2021 11:33:04 -0800 Subject: [PATCH] [cli] implement dataset updater CLI commands (#6227) --- src/cli/cli_dataset.cpp | 42 +++++++++++++++++++++++++++++++++++++++++ src/cli/cli_dataset.hpp | 9 +++++++++ 2 files changed, 51 insertions(+) diff --git a/src/cli/cli_dataset.cpp b/src/cli/cli_dataset.cpp index d8331d2a2..ddbe2ff4f 100644 --- a/src/cli/cli_dataset.cpp +++ b/src/cli/cli_dataset.cpp @@ -38,6 +38,7 @@ #include #include +#include #include "cli/cli.hpp" #include "common/string.hpp" @@ -910,5 +911,46 @@ exit: return error; } +#if OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE && OPENTHREAD_FTD + +otError Dataset::ProcessUpdater(uint8_t aArgsLength, char *aArgs[]) +{ + otError error = OT_ERROR_NONE; + + if (aArgsLength == 0) + { + mInterpreter.OutputEnabledDisabledStatus(otDatasetUpdaterIsUpdateOngoing(mInterpreter.mInstance)); + ExitNow(); + } + + if (strcmp(aArgs[0], "start") == 0) + { + error = otDatasetUpdaterRequestUpdate(mInterpreter.mInstance, &sDataset, &Dataset::HandleDatasetUpdater, this); + } + else if (strcmp(aArgs[0], "cancel") == 0) + { + otDatasetUpdaterCancelUpdate(mInterpreter.mInstance); + } + else + { + error = OT_ERROR_INVALID_ARGS; + } + +exit: + return error; +} + +void Dataset::HandleDatasetUpdater(otError aError, void *aContext) +{ + static_cast(aContext)->HandleDatasetUpdater(aError); +} + +void Dataset::HandleDatasetUpdater(otError aError) +{ + mInterpreter.OutputLine("Dataset update complete: %s", otThreadErrorToString(aError)); +} + +#endif // OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE && OPENTHREAD_FTD + } // namespace Cli } // namespace ot diff --git a/src/cli/cli_dataset.hpp b/src/cli/cli_dataset.hpp index f3f7e5de5..a3c0837e5 100644 --- a/src/cli/cli_dataset.hpp +++ b/src/cli/cli_dataset.hpp @@ -99,6 +99,12 @@ private: otError ProcessSecurityPolicy(uint8_t aArgsLength, char *aArgs[]); otError ProcessSet(uint8_t aArgsLength, char *aArgs[]); +#if OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE && OPENTHREAD_FTD + otError ProcessUpdater(uint8_t aArgsLength, char *aArgs[]); + static void HandleDatasetUpdater(otError aError, void *aContext); + void HandleDatasetUpdater(otError aError); +#endif + static constexpr Command sCommands[] = { {"active", &Dataset::ProcessActive}, {"activetimestamp", &Dataset::ProcessActiveTimestamp}, @@ -121,6 +127,9 @@ private: {"pskc", &Dataset::ProcessPskc}, {"securitypolicy", &Dataset::ProcessSecurityPolicy}, {"set", &Dataset::ProcessSet}, +#if OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE && OPENTHREAD_FTD + {"updater", &Dataset::ProcessUpdater}, +#endif }; static_assert(Utils::LookupTable::IsSorted(sCommands), "Command Table is not sorted");