diff --git a/config/mbed/CMakeLists.txt b/config/mbed/CMakeLists.txt index cb9c9127d5fa71..8a90c376cf858f 100644 --- a/config/mbed/CMakeLists.txt +++ b/config/mbed/CMakeLists.txt @@ -466,6 +466,7 @@ if (CONFIG_CHIP_OTA_REQUESTOR) target_sources(${APP_TARGET} PRIVATE ${CHIP_ROOT}/examples/platform/mbed/ota/OTARequestorDriverImpl.cpp ${CHIP_ROOT}/src/app/clusters/ota-requestor/OTARequestor.cpp + ${CHIP_ROOT}/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp ${CHIP_ROOT}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp ${CHIP_ROOT}/src/app/clusters/ota-requestor/BDXDownloader.cpp ${CHIP_ROOT}/src/platform/mbed/OTAImageProcessorImpl.cpp diff --git a/examples/all-clusters-app/ameba/chip_main.cmake b/examples/all-clusters-app/ameba/chip_main.cmake index a854cb0503573f..ed0270f13e9012 100755 --- a/examples/all-clusters-app/ameba/chip_main.cmake +++ b/examples/all-clusters-app/ameba/chip_main.cmake @@ -118,6 +118,7 @@ list( #OTARequestor ${chip_dir}/src/app/clusters/ota-requestor/BDXDownloader.cpp ${chip_dir}/src/app/clusters/ota-requestor/OTARequestor.cpp + ${chip_dir}/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp ${chip_dir}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp ${chip_dir}/src/app/clusters/ota-requestor/ota-requestor-server.cpp ) diff --git a/examples/all-clusters-app/ameba/main/chipinterface.cpp b/examples/all-clusters-app/ameba/main/chipinterface.cpp index 715f20280195c4..48e285b03d986a 100644 --- a/examples/all-clusters-app/ameba/main/chipinterface.cpp +++ b/examples/all-clusters-app/ameba/main/chipinterface.cpp @@ -39,6 +39,7 @@ #include #if CONFIG_ENABLE_OTA_REQUESTOR +#include "app/clusters/ota-requestor/DefaultOTARequestorStorage.h" #include #include #include @@ -91,6 +92,7 @@ static DeviceCallbacks EchoCallbacks; #if CONFIG_ENABLE_OTA_REQUESTOR OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; AmebaOTAImageProcessor gImageProcessor; @@ -115,8 +117,10 @@ static void InitOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + // Set server instance used for session establishment - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); // WARNING: this is probably not realistic to know such details of the image or to even have an OTADownloader instantiated at // the beginning of program execution. We're using hardcoded values here for now since this is a reference application. diff --git a/examples/all-clusters-app/esp32/main/main.cpp b/examples/all-clusters-app/esp32/main/main.cpp index 020abc509e06b5..b720dd44517bc1 100644 --- a/examples/all-clusters-app/esp32/main/main.cpp +++ b/examples/all-clusters-app/esp32/main/main.cpp @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -77,6 +78,7 @@ namespace { #if CONFIG_ENABLE_OTA_REQUESTOR OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -127,7 +129,8 @@ static void InitOTARequestor(void) { #if CONFIG_ENABLE_OTA_REQUESTOR SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&Server::GetInstance(), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gImageProcessor.SetOTADownloader(&gDownloader); gDownloader.SetImageProcessorDelegate(&gImageProcessor); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/all-clusters-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-app/nrfconnect/CMakeLists.txt index 913eb279c218c1..8d51e9c7e8fd27 100644 --- a/examples/all-clusters-app/nrfconnect/CMakeLists.txt +++ b/examples/all-clusters-app/nrfconnect/CMakeLists.txt @@ -71,10 +71,7 @@ target_sources(app PRIVATE ${ALL_CLUSTERS_COMMON_DIR}/src/bridged-actions-stub.cpp ${GEN_DIR}/all-clusters-app/zap-generated/callback-stub.cpp ${GEN_DIR}/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp - ${NRFCONNECT_COMMON}/util/LEDWidget.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/OTARequestor.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/BDXDownloader.cpp) + ${NRFCONNECT_COMMON}/util/LEDWidget.cpp) chip_configure_data_model(app diff --git a/examples/all-clusters-app/nrfconnect/main/AppTask.cpp b/examples/all-clusters-app/nrfconnect/main/AppTask.cpp index 48a3dc14252710..3db133026cabeb 100644 --- a/examples/all-clusters-app/nrfconnect/main/AppTask.cpp +++ b/examples/all-clusters-app/nrfconnect/main/AppTask.cpp @@ -149,7 +149,8 @@ void AppTask::InitOTARequestor() mOTAImageProcessor.SetOTADownloader(&mBDXDownloader); mBDXDownloader.SetImageProcessorDelegate(&mOTAImageProcessor); mOTARequestorDriver.Init(&mOTARequestor, &mOTAImageProcessor); - mOTARequestor.Init(&chip::Server::GetInstance(), &mOTARequestorDriver, &mBDXDownloader); + mOTARequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + mOTARequestor.Init(chip::Server::GetInstance(), mOTARequestorStorage, mOTARequestorDriver, mBDXDownloader); chip::SetRequestorInstance(&mOTARequestor); #endif } diff --git a/examples/all-clusters-app/nrfconnect/main/include/AppTask.h b/examples/all-clusters-app/nrfconnect/main/include/AppTask.h index a5a89f6e24718a..b05a7d30ff3d3d 100644 --- a/examples/all-clusters-app/nrfconnect/main/include/AppTask.h +++ b/examples/all-clusters-app/nrfconnect/main/include/AppTask.h @@ -21,6 +21,7 @@ #if CONFIG_CHIP_OTA_REQUESTOR #include +#include #include #include #include @@ -73,6 +74,7 @@ class AppTask bool mHaveBLEConnections{ false }; #if CONFIG_CHIP_OTA_REQUESTOR + chip::DefaultOTARequestorStorage mOTARequestorStorage; chip::DeviceLayer::GenericOTARequestorDriver mOTARequestorDriver; chip::DeviceLayer::OTAImageProcessorImpl mOTAImageProcessor; chip::BDXDownloader mBDXDownloader; diff --git a/examples/lighting-app/ameba/chip_main.cmake b/examples/lighting-app/ameba/chip_main.cmake index 5f77187194252a..209e05f1199b77 100755 --- a/examples/lighting-app/ameba/chip_main.cmake +++ b/examples/lighting-app/ameba/chip_main.cmake @@ -16,6 +16,7 @@ list( #OTARequestor ${chip_dir}/src/app/clusters/ota-requestor/BDXDownloader.cpp ${chip_dir}/src/app/clusters/ota-requestor/OTARequestor.cpp + ${chip_dir}/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp ${chip_dir}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp ${chip_dir}/src/app/clusters/ota-requestor/ota-requestor-server.cpp ) diff --git a/examples/lighting-app/ameba/main/chipinterface.cpp b/examples/lighting-app/ameba/main/chipinterface.cpp index f882c659a98e1e..96fd9c5887efaf 100644 --- a/examples/lighting-app/ameba/main/chipinterface.cpp +++ b/examples/lighting-app/ameba/main/chipinterface.cpp @@ -42,6 +42,7 @@ #include #if CONFIG_ENABLE_OTA_REQUESTOR +#include "app/clusters/ota-requestor/DefaultOTARequestorStorage.h" #include #include #include @@ -76,6 +77,7 @@ static DeviceCallbacks EchoCallbacks; #if CONFIG_ENABLE_OTA_REQUESTOR OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; AmebaOTAImageProcessor gImageProcessor; @@ -100,8 +102,10 @@ static void InitOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); + gRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + // Set server instance used for session establishment - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorCore.Init(Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); // WARNING: this is probably not realistic to know such details of the image or to even have an OTADownloader instantiated at // the beginning of program execution. We're using hardcoded values here for now since this is a reference application. diff --git a/examples/lighting-app/esp32/main/main.cpp b/examples/lighting-app/esp32/main/main.cpp index 670a739d4c7ac0..8b854ce7953bef 100644 --- a/examples/lighting-app/esp32/main/main.cpp +++ b/examples/lighting-app/esp32/main/main.cpp @@ -28,6 +28,7 @@ #include "shell_extension/launch.h" #include #include +#include #include #include #include @@ -44,6 +45,7 @@ using namespace ::chip::DeviceLayer; #if CONFIG_ENABLE_OTA_REQUESTOR OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -64,7 +66,8 @@ static void InitOTARequestor(void) { #if CONFIG_ENABLE_OTA_REQUESTOR SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&Server::GetInstance(), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gImageProcessor.SetOTADownloader(&gDownloader); gDownloader.SetImageProcessorDelegate(&gImageProcessor); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/lighting-app/nrfconnect/CMakeLists.txt b/examples/lighting-app/nrfconnect/CMakeLists.txt index dd55b415cfb741..4755a2b9ec961b 100644 --- a/examples/lighting-app/nrfconnect/CMakeLists.txt +++ b/examples/lighting-app/nrfconnect/CMakeLists.txt @@ -92,10 +92,7 @@ target_sources(app PRIVATE ${GEN_DIR}/lighting-app/zap-generated/callback-stub.cpp ${GEN_DIR}/lighting-app/zap-generated/IMClusterCommandHandler.cpp ${NRFCONNECT_COMMON}/util/LEDWidget.cpp - ${NRFCONNECT_COMMON}/util/ThreadUtil.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/OTARequestor.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp - ${CHIP_ROOT}/src/app/clusters/ota-requestor/BDXDownloader.cpp) + ${NRFCONNECT_COMMON}/util/ThreadUtil.cpp) chip_configure_data_model(app INCLUDE_SERVER diff --git a/examples/lighting-app/nrfconnect/main/AppTask.cpp b/examples/lighting-app/nrfconnect/main/AppTask.cpp index f7e49ffd19552e..c8df2ab10cdd21 100644 --- a/examples/lighting-app/nrfconnect/main/AppTask.cpp +++ b/examples/lighting-app/nrfconnect/main/AppTask.cpp @@ -41,6 +41,7 @@ #if CONFIG_CHIP_OTA_REQUESTOR #include +#include #include #include #include @@ -85,6 +86,7 @@ bool sIsThreadEnabled = false; bool sHaveBLEConnections = false; #if CONFIG_CHIP_OTA_REQUESTOR +DefaultOTARequestorStorage sRequestorStorage; GenericOTARequestorDriver sOTARequestorDriver; OTAImageProcessorImpl sOTAImageProcessor; chip::BDXDownloader sBDXDownloader; @@ -203,7 +205,8 @@ void AppTask::InitOTARequestor() sOTAImageProcessor.SetOTADownloader(&sBDXDownloader); sBDXDownloader.SetImageProcessorDelegate(&sOTAImageProcessor); sOTARequestorDriver.Init(&sOTARequestor, &sOTAImageProcessor); - sOTARequestor.Init(&chip::Server::GetInstance(), &sOTARequestorDriver, &sBDXDownloader); + sRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + sOTARequestor.Init(Server::GetInstance(), sRequestorStorage, sOTARequestorDriver, sBDXDownloader); chip::SetRequestorInstance(&sOTARequestor); #endif } diff --git a/examples/lighting-app/nxp/k32w/k32w0/main/AppTask.cpp b/examples/lighting-app/nxp/k32w/k32w0/main/AppTask.cpp index 9f81e8d6ff2901..646144671c8713 100644 --- a/examples/lighting-app/nxp/k32w/k32w0/main/AppTask.cpp +++ b/examples/lighting-app/nxp/k32w/k32w0/main/AppTask.cpp @@ -37,6 +37,7 @@ #include "OTAImageProcessorImpl.h" #include "OtaSupport.h" #include +#include #include #include @@ -85,7 +86,8 @@ AppTask AppTask::sAppTask; /* OTA related variables */ static OTARequestor gRequestorCore; -DeviceLayer::GenericOTARequestorDriver gRequestorUser; +static DefaultOTARequestorStorage gRequestorStorage; +static DeviceLayer::GenericOTARequestorDriver gRequestorUser; static BDXDownloader gDownloader; static OTAImageProcessorImpl gImageProcessor; @@ -121,7 +123,8 @@ CHIP_ERROR AppTask::Init() // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); // WARNING: this is probably not realistic to know such details of the image or to even have an OTADownloader instantiated at diff --git a/examples/lock-app/cc13x2x7_26x2x7/main/AppTask.cpp b/examples/lock-app/cc13x2x7_26x2x7/main/AppTask.cpp index 33efe151742ac8..86a07ef44f50f8 100644 --- a/examples/lock-app/cc13x2x7_26x2x7/main/AppTask.cpp +++ b/examples/lock-app/cc13x2x7_26x2x7/main/AppTask.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -63,6 +64,7 @@ static Button_Handle sAppRightHandle; AppTask AppTask::sAppTask; static OTARequestor sRequestorCore; +static DefaultOTARequestorStorage sRequestorStorage; static GenericOTARequestorDriver sRequestorUser; static BDXDownloader sDownloader; static OTAImageProcessorImpl sImageProcessor; @@ -72,7 +74,8 @@ void InitializeOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects SetRequestorInstance(&sRequestorCore); - sRequestorCore.Init(&Server::GetInstance(), &sRequestorUser, &sDownloader); + sRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + sRequestorCore.Init(Server::GetInstance(), sRequestorStorage, sRequestorUser, sDownloader); sImageProcessor.SetOTADownloader(&sDownloader); sDownloader.SetImageProcessorDelegate(&sImageProcessor); sRequestorUser.Init(&sRequestorCore, &sImageProcessor); diff --git a/examples/lock-app/nrfconnect/main/AppTask.cpp b/examples/lock-app/nrfconnect/main/AppTask.cpp index a66a4051dda9a7..09919a72fad01f 100644 --- a/examples/lock-app/nrfconnect/main/AppTask.cpp +++ b/examples/lock-app/nrfconnect/main/AppTask.cpp @@ -37,6 +37,7 @@ #if CONFIG_CHIP_OTA_REQUESTOR #include +#include #include #include #include @@ -74,6 +75,7 @@ bool sIsThreadEnabled = false; bool sHaveBLEConnections = false; #if CONFIG_CHIP_OTA_REQUESTOR +DefaultOTARequestorStorage sRequestorStorage; GenericOTARequestorDriver sOTARequestorDriver; OTAImageProcessorImpl sOTAImageProcessor; chip::BDXDownloader sBDXDownloader; @@ -184,7 +186,8 @@ void AppTask::InitOTARequestor() sOTAImageProcessor.SetOTADownloader(&sBDXDownloader); sBDXDownloader.SetImageProcessorDelegate(&sOTAImageProcessor); sOTARequestorDriver.Init(&sOTARequestor, &sOTAImageProcessor); - sOTARequestor.Init(&chip::Server::GetInstance(), &sOTARequestorDriver, &sBDXDownloader); + sRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + sOTARequestor.Init(Server::GetInstance(), sRequestorStorage, sOTARequestorDriver, sBDXDownloader); chip::SetRequestorInstance(&sOTARequestor); #endif } diff --git a/examples/ota-requestor-app/ameba/chip_main.cmake b/examples/ota-requestor-app/ameba/chip_main.cmake index d167230c3f7b22..e1d593035988fb 100644 --- a/examples/ota-requestor-app/ameba/chip_main.cmake +++ b/examples/ota-requestor-app/ameba/chip_main.cmake @@ -24,6 +24,7 @@ list( ${chip_dir}/src/app/clusters/ota-requestor/BDXDownloader.cpp ${chip_dir}/src/app/clusters/ota-requestor/OTARequestor.cpp + ${chip_dir}/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp ${chip_dir}/src/app/clusters/ota-requestor/GenericOTARequestorDriver.cpp ${chip_dir}/src/app/clusters/ota-requestor/ota-requestor-server.cpp ) diff --git a/examples/ota-requestor-app/ameba/main/chipinterface.cpp b/examples/ota-requestor-app/ameba/main/chipinterface.cpp index d87f326ae7005c..679937ef2ff481 100644 --- a/examples/ota-requestor-app/ameba/main/chipinterface.cpp +++ b/examples/ota-requestor-app/ameba/main/chipinterface.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -78,6 +79,7 @@ void NetWorkCommissioningInstInit() static DeviceCallbacks EchoCallbacks; OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; AmebaOTAImageProcessor gImageProcessor; @@ -100,8 +102,10 @@ static void InitOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + // Set server instance used for session establishment - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); // WARNING: this is probably not realistic to know such details of the image or to even have an OTADownloader instantiated at // the beginning of program execution. We're using hardcoded values here for now since this is a reference application. diff --git a/examples/ota-requestor-app/cyw30739/args.gni b/examples/ota-requestor-app/cyw30739/args.gni index 5906f2e476dc00..3a0f8dfe66d36f 100644 --- a/examples/ota-requestor-app/cyw30739/args.gni +++ b/examples/ota-requestor-app/cyw30739/args.gni @@ -19,6 +19,9 @@ cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain") chip_openthread_ftd = true +# Disable progress logging to fit in flash +chip_progress_logging = false + declare_args() { chip_enable_ota_requestor = true } diff --git a/examples/ota-requestor-app/cyw30739/src/main.cpp b/examples/ota-requestor-app/cyw30739/src/main.cpp index 508b9e8a6430e9..b775fbc350bf7d 100644 --- a/examples/ota-requestor-app/cyw30739/src/main.cpp +++ b/examples/ota-requestor-app/cyw30739/src/main.cpp @@ -18,6 +18,7 @@ */ #include #include +#include #include #include #include @@ -42,6 +43,7 @@ using namespace chip::Shell; static void InitApp(intptr_t args); OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; DeviceLayer::GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -129,7 +131,8 @@ void InitApp(intptr_t args) // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); gImageProcessor.SetOTADownloader(&gDownloader); diff --git a/examples/ota-requestor-app/efr32/src/AppTask.cpp b/examples/ota-requestor-app/efr32/src/AppTask.cpp index b06f742526eaf3..a6f9dc56c6f705 100644 --- a/examples/ota-requestor-app/efr32/src/AppTask.cpp +++ b/examples/ota-requestor-app/efr32/src/AppTask.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -98,6 +99,7 @@ using namespace ::chip::DeviceLayer; // Global OTA objects OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; DeviceLayer::GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -535,7 +537,8 @@ void AppTask::InitOTARequestor() // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/ota-requestor-app/esp32/main/main.cpp b/examples/ota-requestor-app/esp32/main/main.cpp index c587ec4bf22c14..93ce8c929f95ca 100644 --- a/examples/ota-requestor-app/esp32/main/main.cpp +++ b/examples/ota-requestor-app/esp32/main/main.cpp @@ -30,6 +30,7 @@ #include "nvs_flash.h" #include #include +#include #include #include #include @@ -53,6 +54,7 @@ const char * TAG = "ota-requester-app"; static DeviceCallbacks EchoCallbacks; OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -70,7 +72,8 @@ static void InitServer(intptr_t context) sWiFiNetworkCommissioningInstance.Init(); SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gImageProcessor.SetOTADownloader(&gDownloader); gDownloader.SetImageProcessorDelegate(&gImageProcessor); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/ota-requestor-app/linux/main.cpp b/examples/ota-requestor-app/linux/main.cpp index 25817e7b978e4c..0de41918de1e23 100644 --- a/examples/ota-requestor-app/linux/main.cpp +++ b/examples/ota-requestor-app/linux/main.cpp @@ -18,6 +18,7 @@ #include "AppMain.h" #include +#include #include #include #include @@ -48,6 +49,7 @@ using namespace chip::Messaging; using namespace chip::app::Clusters::OtaSoftwareUpdateProvider::Commands; OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; DeviceLayer::ExtendedOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -99,7 +101,8 @@ static void InitOTARequestor(void) // Periodic query timeout must be set prior to requestor being initialized gRequestorUser.SetPeriodicQueryTimeout(gPeriodicQueryTimeoutSec); - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); // WARNING: this is probably not realistic to know such details of the image or to even have an OTADownloader instantiated at diff --git a/examples/ota-requestor-app/p6/src/AppTask.cpp b/examples/ota-requestor-app/p6/src/AppTask.cpp index 537973c12593d2..2631a843160081 100644 --- a/examples/ota-requestor-app/p6/src/AppTask.cpp +++ b/examples/ota-requestor-app/p6/src/AppTask.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -94,6 +95,7 @@ StackType_t appStack[APP_TASK_STACK_SIZE / sizeof(StackType_t)]; StaticTask_t appTaskStruct; OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -180,7 +182,8 @@ CHIP_ERROR AppTask::Init() ConfigurationMgr().LogDeviceConfig(); SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gImageProcessor.SetOTADownloader(&gDownloader); gDownloader.SetImageProcessorDelegate(&gImageProcessor); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/platform/efr32/OTAConfig.cpp b/examples/platform/efr32/OTAConfig.cpp index 6584cde832ea39..068ff810bcc47e 100644 --- a/examples/platform/efr32/OTAConfig.cpp +++ b/examples/platform/efr32/OTAConfig.cpp @@ -62,6 +62,7 @@ __attribute__((used)) ApplicationProperties_t sl_app_properties = { // Global OTA objects chip::OTARequestor gRequestorCore; +chip::DefaultOTARequestorStorage gRequestorStorage; chip::DeviceLayer::GenericOTARequestorDriver gRequestorUser; chip::BDXDownloader gDownloader; chip::OTAImageProcessorImpl gImageProcessor; @@ -71,7 +72,8 @@ void OTAConfig::Init() // Initialize and interconnect the Requestor and Image Processor objects -- START SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&(chip::Server::GetInstance()), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/platform/efr32/OTAConfig.h b/examples/platform/efr32/OTAConfig.h index 65932ec498100e..12f82882b2e5a3 100644 --- a/examples/platform/efr32/OTAConfig.h +++ b/examples/platform/efr32/OTAConfig.h @@ -19,6 +19,7 @@ #pragma once #include +#include #include #include #include diff --git a/examples/platform/mbed/util/DFUManager.cpp b/examples/platform/mbed/util/DFUManager.cpp index a26b7f1f47d320..64a6726b497af7 100644 --- a/examples/platform/mbed/util/DFUManager.cpp +++ b/examples/platform/mbed/util/DFUManager.cpp @@ -56,7 +56,8 @@ CHIP_ERROR DFUManager::Init(chip::Callback::Callback * onUpda #ifdef CHIP_OTA_REQUESTOR SetRequestorInstance(&mRequestorCore); - mRequestorCore.Init(&(chip::Server::GetInstance()), &mRequestorDriver, &mDownloader); + mRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + mRequestorCore.Init(chip::Server::GetInstance(), mRequestorStorage, mRequestorDriver, mDownloader); mImageProcessor.SetOTADownloader(&mDownloader); mDownloader.SetImageProcessorDelegate(&mImageProcessor); mRequestorDriver.Init(&mRequestorCore, &mImageProcessor, &mOnOtaUpdateAvailableCallback, &mOnOtaUpdateApplyCallback); diff --git a/examples/platform/mbed/util/include/DFUManager.h b/examples/platform/mbed/util/include/DFUManager.h index aed8b29bb9e7da..5833c59739e39e 100644 --- a/examples/platform/mbed/util/include/DFUManager.h +++ b/examples/platform/mbed/util/include/DFUManager.h @@ -54,6 +54,7 @@ class DFUManager #ifdef CHIP_OTA_REQUESTOR chip::OTARequestor mRequestorCore; + chip::DefaultOTARequestorStorage mRequestorStorage; chip::DeviceLayer::OTARequestorDriverImpl mRequestorDriver; chip::BDXDownloader mDownloader; chip::OTAImageProcessorImpl mImageProcessor; diff --git a/examples/platform/qpg/ota/ota.cpp b/examples/platform/qpg/ota/ota.cpp index eef6412ad22d6e..ec21de168950f7 100644 --- a/examples/platform/qpg/ota/ota.cpp +++ b/examples/platform/qpg/ota/ota.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -40,6 +41,7 @@ using namespace chip::DeviceLayer; *****************************************************************************/ OTARequestor gRequestorCore; +DefaultOTARequestorStorage gRequestorStorage; GenericOTARequestorDriver gRequestorUser; BDXDownloader gDownloader; OTAImageProcessorImpl gImageProcessor; @@ -53,7 +55,8 @@ void InitializeOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects SetRequestorInstance(&gRequestorCore); - gRequestorCore.Init(&Server::GetInstance(), &gRequestorUser, &gDownloader); + gRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + gRequestorCore.Init(chip::Server::GetInstance(), gRequestorStorage, gRequestorUser, gDownloader); gImageProcessor.SetOTADownloader(&gDownloader); gDownloader.SetImageProcessorDelegate(&gImageProcessor); gRequestorUser.Init(&gRequestorCore, &gImageProcessor); diff --git a/examples/pump-app/cc13x2x7_26x2x7/main/AppTask.cpp b/examples/pump-app/cc13x2x7_26x2x7/main/AppTask.cpp index cdcf5a4920cbe0..f576fafcaa8bd1 100644 --- a/examples/pump-app/cc13x2x7_26x2x7/main/AppTask.cpp +++ b/examples/pump-app/cc13x2x7_26x2x7/main/AppTask.cpp @@ -33,6 +33,7 @@ #if defined(CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR) #include +#include #include #include #include @@ -76,6 +77,7 @@ AppTask AppTask::sAppTask; #if defined(CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR) static OTARequestor sRequestorCore; +static DefaultOTARequestorStorage sRequestorStorage; static GenericOTARequestorDriver sRequestorUser; static BDXDownloader sDownloader; static OTAImageProcessorImpl sImageProcessor; @@ -85,7 +87,8 @@ void InitializeOTARequestor(void) // Initialize and interconnect the Requestor and Image Processor objects SetRequestorInstance(&sRequestorCore); - sRequestorCore.Init(&Server::GetInstance(), &sRequestorUser, &sDownloader); + sRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + sRequestorCore.Init(chip::Server::GetInstance(), sRequestorStorage, sRequestorUser, sDownloader); sImageProcessor.SetOTADownloader(&sDownloader); sDownloader.SetImageProcessorDelegate(&sImageProcessor); sRequestorUser.Init(&sRequestorCore, &sImageProcessor); diff --git a/examples/pump-app/nrfconnect/main/AppTask.cpp b/examples/pump-app/nrfconnect/main/AppTask.cpp index 4ac4e27f810788..109daba8afddb0 100644 --- a/examples/pump-app/nrfconnect/main/AppTask.cpp +++ b/examples/pump-app/nrfconnect/main/AppTask.cpp @@ -38,6 +38,7 @@ #if CONFIG_CHIP_OTA_REQUESTOR #include +#include #include #include #include @@ -77,6 +78,7 @@ bool sIsThreadEnabled = false; bool sHaveBLEConnections = false; #if CONFIG_CHIP_OTA_REQUESTOR +DefaultOTARequestorStorage sRequestorStorage; GenericOTARequestorDriver sOTARequestorDriver; OTAImageProcessorImpl sOTAImageProcessor; chip::BDXDownloader sBDXDownloader; @@ -181,7 +183,8 @@ void AppTask::InitOTARequestor() sOTAImageProcessor.SetOTADownloader(&sBDXDownloader); sBDXDownloader.SetImageProcessorDelegate(&sOTAImageProcessor); sOTARequestorDriver.Init(&sOTARequestor, &sOTAImageProcessor); - sOTARequestor.Init(&chip::Server::GetInstance(), &sOTARequestorDriver, &sBDXDownloader); + sRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + sOTARequestor.Init(chip::Server::GetInstance(), sRequestorStorage, sOTARequestorDriver, sBDXDownloader); chip::SetRequestorInstance(&sOTARequestor); #endif } diff --git a/examples/pump-controller-app/nrfconnect/main/AppTask.cpp b/examples/pump-controller-app/nrfconnect/main/AppTask.cpp index 1ebea80904674b..8898f065036add 100644 --- a/examples/pump-controller-app/nrfconnect/main/AppTask.cpp +++ b/examples/pump-controller-app/nrfconnect/main/AppTask.cpp @@ -38,6 +38,7 @@ #if CONFIG_CHIP_OTA_REQUESTOR #include +#include #include #include #include @@ -74,6 +75,7 @@ bool sIsThreadEnabled = false; bool sHaveBLEConnections = false; #if CONFIG_CHIP_OTA_REQUESTOR +DefaultOTARequestorStorage sRequestorStorage; GenericOTARequestorDriver sOTARequestorDriver; OTAImageProcessorImpl sOTAImageProcessor; chip::BDXDownloader sBDXDownloader; @@ -178,7 +180,8 @@ void AppTask::InitOTARequestor() sOTAImageProcessor.SetOTADownloader(&sBDXDownloader); sBDXDownloader.SetImageProcessorDelegate(&sOTAImageProcessor); sOTARequestorDriver.Init(&sOTARequestor, &sOTAImageProcessor); - sOTARequestor.Init(&chip::Server::GetInstance(), &sOTARequestorDriver, &sBDXDownloader); + sRequestorStorage.Init(chip::Server::GetInstance().GetPersistentStorage()); + sOTARequestor.Init(chip::Server::GetInstance(), sRequestorStorage, sOTARequestorDriver, sBDXDownloader); chip::SetRequestorInstance(&sOTARequestor); #endif } diff --git a/src/app/chip_data_model.gni b/src/app/chip_data_model.gni index 23ef447d0ee194..1940af021400df 100644 --- a/src/app/chip_data_model.gni +++ b/src/app/chip_data_model.gni @@ -131,10 +131,13 @@ template("chip_data_model") { "${_app_root}/clusters/${cluster}/${cluster}-server.cpp", "${_app_root}/clusters/${cluster}/BDXDownloader.cpp", "${_app_root}/clusters/${cluster}/BDXDownloader.h", + "${_app_root}/clusters/${cluster}/DefaultOTARequestorStorage.cpp", + "${_app_root}/clusters/${cluster}/DefaultOTARequestorStorage.h", "${_app_root}/clusters/${cluster}/DefaultOTARequestorUserConsentProvider.h", "${_app_root}/clusters/${cluster}/ExtendedOTARequestorDriver.cpp", "${_app_root}/clusters/${cluster}/GenericOTARequestorDriver.cpp", "${_app_root}/clusters/${cluster}/OTARequestor.cpp", + "${_app_root}/clusters/${cluster}/OTARequestorStorage.h", ] } else if (cluster == "bindings") { sources += [ diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp b/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp index 985cae72963e29..e16a10f0300350 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp +++ b/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.cpp @@ -55,21 +55,21 @@ CHIP_ERROR DefaultOTARequestorStorage::StoreDefaultProviders(const ProviderLocat ReturnErrorOnFailure(writer.EndContainer(outerType)); - return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator().OTADefaultProviders(), buffer, + return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator::OTADefaultProviders(), buffer, static_cast(writer.GetLengthWritten())); } CHIP_ERROR DefaultOTARequestorStorage::LoadDefaultProviders(ProviderLocationList & providers) { uint8_t buffer[kProviderListMaxSerializedSize]; - uint16_t size = sizeof(buffer); + MutableByteSpan bufferSpan(buffer); - ReturnErrorOnFailure(mPersistentStorage->SyncGetKeyValue(DefaultStorageKeyAllocator().OTADefaultProviders(), buffer, size)); + ReturnErrorOnFailure(Load(DefaultStorageKeyAllocator::OTADefaultProviders(), bufferSpan)); TLV::TLVReader reader; TLV::TLVType outerType; - reader.Init(buffer, size); + reader.Init(bufferSpan.data(), bufferSpan.size()); ReturnErrorOnFailure(reader.Next(TLV::TLVType::kTLVType_Array, TLV::AnonymousTag())); ReturnErrorOnFailure(reader.EnterContainer(outerType)); @@ -93,25 +93,25 @@ CHIP_ERROR DefaultOTARequestorStorage::StoreCurrentProviderLocation(const Provid writer.Init(buffer); ReturnErrorOnFailure(provider.EncodeForRead(writer, TLV::AnonymousTag(), provider.fabricIndex)); - return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator().OTACurrentProvider(), buffer, + return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator::OTACurrentProvider(), buffer, static_cast(writer.GetLengthWritten())); } CHIP_ERROR DefaultOTARequestorStorage::ClearCurrentProviderLocation() { - return mPersistentStorage->SyncDeleteKeyValue(DefaultStorageKeyAllocator().OTACurrentProvider()); + return mPersistentStorage->SyncDeleteKeyValue(DefaultStorageKeyAllocator::OTACurrentProvider()); } CHIP_ERROR DefaultOTARequestorStorage::LoadCurrentProviderLocation(ProviderLocationType & provider) { uint8_t buffer[kProviderMaxSerializedSize]; - uint16_t size = sizeof(buffer); + MutableByteSpan bufferSpan(buffer); - ReturnErrorOnFailure(mPersistentStorage->SyncGetKeyValue(DefaultStorageKeyAllocator().OTACurrentProvider(), buffer, size)); + ReturnErrorOnFailure(Load(DefaultStorageKeyAllocator::OTACurrentProvider(), bufferSpan)); TLV::TLVReader reader; - reader.Init(buffer, size); + reader.Init(bufferSpan.data(), bufferSpan.size()); ReturnErrorOnFailure(reader.Next(TLV::AnonymousTag())); ReturnErrorOnFailure(provider.Decode(reader)); @@ -120,22 +120,27 @@ CHIP_ERROR DefaultOTARequestorStorage::LoadCurrentProviderLocation(ProviderLocat CHIP_ERROR DefaultOTARequestorStorage::StoreUpdateToken(ByteSpan updateToken) { - return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator().OTAUpdateToken(), updateToken.data(), + return mPersistentStorage->SyncSetKeyValue(DefaultStorageKeyAllocator::OTAUpdateToken(), updateToken.data(), static_cast(updateToken.size())); } CHIP_ERROR DefaultOTARequestorStorage::ClearUpdateToken() { - return mPersistentStorage->SyncDeleteKeyValue(DefaultStorageKeyAllocator().OTAUpdateToken()); + return mPersistentStorage->SyncDeleteKeyValue(DefaultStorageKeyAllocator::OTAUpdateToken()); } CHIP_ERROR DefaultOTARequestorStorage::LoadUpdateToken(MutableByteSpan & updateToken) { - uint16_t size = static_cast(updateToken.size()); - CHIP_ERROR error = mPersistentStorage->SyncGetKeyValue(DefaultStorageKeyAllocator().OTAUpdateToken(), updateToken.data(), size); + return Load(DefaultStorageKeyAllocator::OTAUpdateToken(), updateToken); +} + +CHIP_ERROR DefaultOTARequestorStorage::Load(const char * key, MutableByteSpan & buffer) +{ + uint16_t size = static_cast(buffer.size()); + ReturnErrorOnFailure(mPersistentStorage->SyncGetKeyValue(key, buffer.data(), size)); - updateToken.reduce_size(size); - return error; + buffer = MutableByteSpan(buffer.data(), size); + return CHIP_NO_ERROR; } } // namespace chip diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.h b/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.h index 4c5f39042e287d..a9f973de43c726 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.h +++ b/src/app/clusters/ota-requestor/DefaultOTARequestorStorage.h @@ -41,6 +41,7 @@ class DefaultOTARequestorStorage : public OTARequestorStorage CHIP_ERROR LoadUpdateToken(MutableByteSpan & updateToken) override; private: + CHIP_ERROR Load(const char * key, MutableByteSpan & buffer); PersistentStorageDelegate * mPersistentStorage = nullptr; }; diff --git a/src/app/clusters/ota-requestor/OTARequestor.cpp b/src/app/clusters/ota-requestor/OTARequestor.cpp index 956699fb215487..4aca7370301df9 100644 --- a/src/app/clusters/ota-requestor/OTARequestor.cpp +++ b/src/app/clusters/ota-requestor/OTARequestor.cpp @@ -484,18 +484,13 @@ void OTARequestor::NotifyUpdateApplied(uint32_t version) CHIP_ERROR OTARequestor::ClearDefaultOtaProviderList(FabricIndex fabricIndex) { - // Remove all entries for the fabric index indicated - auto iterator = mDefaultOtaProviderList.Begin(); - while (iterator.Next()) - { - ProviderLocation::Type pl = iterator.GetValue(); - if (pl.GetFabricIndex() == fabricIndex) - { - mDefaultOtaProviderList.Delete(pl); - } - } + CHIP_ERROR error = mDefaultOtaProviderList.Delete(fabricIndex); - return CHIP_NO_ERROR; + // Ignore the error if no entry for the associated fabric index has been found. + ReturnErrorCodeIf(error == CHIP_ERROR_NOT_FOUND, CHIP_NO_ERROR); + ReturnErrorOnFailure(error); + + return mStorage->StoreDefaultProviders(mDefaultOtaProviderList); } CHIP_ERROR OTARequestor::AddDefaultOtaProvider(const ProviderLocation::Type & providerLocation) @@ -514,7 +509,7 @@ CHIP_ERROR OTARequestor::AddDefaultOtaProvider(const ProviderLocation::Type & pr ReturnErrorOnFailure(mDefaultOtaProviderList.Add(providerLocation)); - return CHIP_NO_ERROR; + return mStorage->StoreDefaultProviders(mDefaultOtaProviderList); } void OTARequestor::OnDownloadStateChanged(OTADownloader::State state, OTAChangeReasonEnum reason) diff --git a/src/app/clusters/ota-requestor/OTARequestor.h b/src/app/clusters/ota-requestor/OTARequestor.h index 5052f13f31c762..374fb6112b9d0d 100644 --- a/src/app/clusters/ota-requestor/OTARequestor.h +++ b/src/app/clusters/ota-requestor/OTARequestor.h @@ -30,6 +30,7 @@ #include "BDXDownloader.h" #include "OTARequestorDriver.h" #include "OTARequestorInterface.h" +#include "OTARequestorStorage.h" namespace chip { @@ -106,21 +107,21 @@ class OTARequestor : public OTARequestorInterface, public BDXDownloader::StateDe * - Set the OTA requestor driver instance used to communicate download progress and errors * - Set the BDX downloader instance used for initiating BDX downloads */ - CHIP_ERROR Init(Server * server, OTARequestorDriver * driver, BDXDownloader * downloader) + CHIP_ERROR Init(Server & server, OTARequestorStorage & storage, OTARequestorDriver & driver, BDXDownloader & downloader) { - mServer = server; - mCASESessionManager = server->GetCASESessionManager(); - mOtaRequestorDriver = driver; - mBdxDownloader = downloader; + mServer = &server; + mCASESessionManager = server.GetCASESessionManager(); + mStorage = &storage; + mOtaRequestorDriver = &driver; + mBdxDownloader = &downloader; uint32_t version; ReturnErrorOnFailure(DeviceLayer::ConfigurationMgr().GetSoftwareVersion(version)); mCurrentVersion = version; + storage.LoadDefaultProviders(mDefaultOtaProviderList); OtaRequestorServerSetUpdateState(mCurrentUpdateState); - app::DataModel::Nullable percent; - percent.SetNull(); - OtaRequestorServerSetUpdateStateProgress(percent); + OtaRequestorServerSetUpdateStateProgress(app::DataModel::NullNullable); // This results in the initial periodic timer kicking off RecordNewUpdateState(OTAUpdateStateEnum::kIdle, OTAChangeReasonEnum::kSuccess); @@ -293,6 +294,7 @@ class OTARequestor : public OTARequestorInterface, public BDXDownloader::StateDe */ static void OnCommissioningCompleteRequestor(const DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + OTARequestorStorage * mStorage = nullptr; OTARequestorDriver * mOtaRequestorDriver = nullptr; CASESessionManager * mCASESessionManager = nullptr; OnConnectedAction mOnConnectedAction = kQueryImage; diff --git a/src/app/clusters/ota-requestor/OTARequestorInterface.h b/src/app/clusters/ota-requestor/OTARequestorInterface.h index 99d08ac60cbc3d..82a319e81551fd 100644 --- a/src/app/clusters/ota-requestor/OTARequestorInterface.h +++ b/src/app/clusters/ota-requestor/OTARequestorInterface.h @@ -114,22 +114,17 @@ class ProviderLocationList } /** - * Delete a provider location from the list if found + * Delete a provider location for the given fabric index. */ - CHIP_ERROR Delete(const app::Clusters::OtaSoftwareUpdateRequestor::Structs::ProviderLocation::Type & providerLocation) + CHIP_ERROR Delete(FabricIndex fabricIndex) { for (size_t i = 0; i < mMaxSize; i++) { - if (mList[i].HasValue()) + if (mList[i].HasValue() && mList[i].Value().GetFabricIndex() == fabricIndex) { - const app::Clusters::OtaSoftwareUpdateRequestor::Structs::ProviderLocation::Type & pl = mList[i].Value(); - if ((pl.GetFabricIndex() == providerLocation.GetFabricIndex()) && - (pl.providerNodeID == providerLocation.providerNodeID) && (pl.endpoint == providerLocation.endpoint)) - { - mList[i].ClearValue(); - mListSize--; - return CHIP_NO_ERROR; - } + mList[i].ClearValue(); + mListSize--; + return CHIP_NO_ERROR; } } diff --git a/src/lib/support/DefaultStorageKeyAllocator.h b/src/lib/support/DefaultStorageKeyAllocator.h index 79d6279b763330..865fb26aecbcab 100644 --- a/src/lib/support/DefaultStorageKeyAllocator.h +++ b/src/lib/support/DefaultStorageKeyAllocator.h @@ -72,9 +72,9 @@ class DefaultStorageKeyAllocator const char * BindingTable() { return Format("bt"); } const char * BindingTableEntry(uint8_t index) { return Format("bt/%x", index); } - const char * OTADefaultProviders() { return "o/dp"; } - const char * OTACurrentProvider() { return "o/pl"; } - const char * OTAUpdateToken() { return "o/ut"; } + static const char * OTADefaultProviders() { return "o/dp"; } + static const char * OTACurrentProvider() { return "o/cp"; } + static const char * OTAUpdateToken() { return "o/ut"; } private: static const size_t kKeyLengthMax = 32;