From 21cb029383e0a8c7d6d73c2d923f2efafd7cf58f Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Sat, 8 Jan 2022 12:29:48 +0530 Subject: [PATCH] [ESP32] Fix ota-provider-app build failure --- .../esp32/main/BdxOtaSender.cpp | 2 +- .../{ => ota-provider-common}/BdxOtaSender.h | 3 ++ examples/ota-provider-app/esp32/main/main.cpp | 39 ++++++++----------- 3 files changed, 20 insertions(+), 24 deletions(-) rename examples/ota-provider-app/esp32/main/include/{ => ota-provider-common}/BdxOtaSender.h (96%) diff --git a/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp b/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp index 34677c17c00496..d4ca1a3de1ce79 100644 --- a/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp +++ b/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp @@ -15,7 +15,7 @@ * limitations under the License. */ -#include +#include #include #include diff --git a/examples/ota-provider-app/esp32/main/include/BdxOtaSender.h b/examples/ota-provider-app/esp32/main/include/ota-provider-common/BdxOtaSender.h similarity index 96% rename from examples/ota-provider-app/esp32/main/include/BdxOtaSender.h rename to examples/ota-provider-app/esp32/main/include/ota-provider-common/BdxOtaSender.h index 4940d676dedd58..70a90a0aaa21df 100644 --- a/examples/ota-provider-app/esp32/main/include/BdxOtaSender.h +++ b/examples/ota-provider-app/esp32/main/include/ota-provider-common/BdxOtaSender.h @@ -89,6 +89,9 @@ class BdxOtaSender : public chip::bdx::Responder */ uint64_t GetTransferLength(void); + /* ota-provider-common/OTAProviderExample.cpp requires this */ + void SetFilepath(const char * path) {} + private: // Inherited from bdx::TransferFacilitator void HandleTransferSessionOutput(chip::bdx::TransferSession::OutputEvent & event) override; diff --git a/examples/ota-provider-app/esp32/main/main.cpp b/examples/ota-provider-app/esp32/main/main.cpp index 3f5c8deae79636..d47b98510d43ed 100644 --- a/examples/ota-provider-app/esp32/main/main.cpp +++ b/examples/ota-provider-app/esp32/main/main.cpp @@ -41,8 +41,8 @@ #include -#include #include +#include #include using chip::BitFlags; @@ -64,17 +64,13 @@ namespace { const char * TAG = "ota-provider-app"; const uint8_t kMaxImagePathlen = 35; static DeviceCallbacks EchoCallbacks; -BdxOtaSender bdxServer; // TODO: this should probably be done dynamically -constexpr chip::EndpointId kOtaProviderEndpoint = 0; -constexpr uint32_t kMaxBdxBlockSize = 1024; -constexpr chip::System::Clock::Timeout kBdxTimeout = chip::System::Clock::Seconds16(5 * 60); // Specification mandates >= 5 minutes -constexpr chip::System::Clock::Timeout kBdxPollFreq = chip::System::Clock::Milliseconds32(500); -const char * otaFilename = CONFIG_OTA_IMAGE_NAME; -FILE * otaImageFile = NULL; -uint32_t otaImageLen = 0; -uint32_t otaTransferInProgress = false; +constexpr chip::EndpointId kOtaProviderEndpoint = 0; +const char * otaFilename = CONFIG_OTA_IMAGE_NAME; +FILE * otaImageFile = NULL; +uint32_t otaImageLen = 0; +uint32_t otaTransferInProgress = false; static OTAProviderExample otaProvider; chip::Callback::Callback onBlockQueryCallback(OnBlockQuery, nullptr); @@ -93,8 +89,12 @@ CHIP_ERROR OnBlockQuery(void * context, chip::System::PacketBufferHandle & block } otaTransferInProgress = true; } + + BdxOtaSender * bdxOtaSender = otaProvider.GetBdxOtaSender(); + VerifyOrReturnError(bdxOtaSender != nullptr, CHIP_ERROR_INCORRECT_STATE); + uint16_t blockBufAvailableLength = blockBuf->AvailableDataLength(); - uint16_t transferBlockSize = bdxServer.GetTransferBlockSize(); + uint16_t transferBlockSize = bdxOtaSender->GetTransferBlockSize(); size = (blockBufAvailableLength < transferBlockSize) ? blockBufAvailableLength : transferBlockSize; if (offset + size >= otaImageLen) @@ -167,9 +167,12 @@ extern "C" void app_main() // Initialize device attestation config SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider()); + BdxOtaSender * bdxOtaSender = otaProvider.GetBdxOtaSender(); + VerifyOrReturn(bdxOtaSender != nullptr, ESP_LOGE(TAG, "bdxOtaSender is nullptr")); + // Register handler to handle bdx messages error = chip::Server::GetInstance().GetExchangeManager().RegisterUnsolicitedMessageHandlerForProtocol(chip::Protocols::BDX::Id, - &bdxServer); + bdxOtaSender); if (error != CHIP_NO_ERROR) { ESP_LOGE(TAG, "RegisterUnsolicitedMessageHandler failed: %s", chip::ErrorStr(error)); @@ -180,7 +183,7 @@ extern "C" void app_main() callbacks.onBlockQuery = &onBlockQueryCallback; callbacks.onTransferComplete = &onTransferCompleteCallback; callbacks.onTransferFailed = &onTransferFailedCallback; - bdxServer.SetCallbacks(callbacks); + bdxOtaSender->SetCallbacks(callbacks); esp_vfs_spiffs_conf_t spiffs_conf = { .base_path = "/spiffs", @@ -217,14 +220,4 @@ extern "C" void app_main() } chip::app::Clusters::OTAProvider::SetDelegate(kOtaProviderEndpoint, &otaProvider); - - BitFlags bdxFlags; - bdxFlags.Set(TransferControlFlags::kReceiverDrive); - error = bdxServer.PrepareForTransfer(&chip::DeviceLayer::SystemLayer(), chip::bdx::TransferRole::kSender, bdxFlags, - kMaxBdxBlockSize, kBdxTimeout, kBdxPollFreq); - if (error != CHIP_NO_ERROR) - { - ChipLogError(BDX, "Failed to init BDX server: %s", chip::ErrorStr(error)); - return; - } }