From 5789009ed1f452479b234b4cd91b147d75c238bf Mon Sep 17 00:00:00 2001 From: Wang Qixiang <43193572+wqx6@users.noreply.github.com> Date: Fri, 3 Dec 2021 06:21:35 +0800 Subject: [PATCH] ESP:Use spiffs in ESP OTA Provider example (#12400) * Use spiffs in ESP OTA Provider Example * Temporarily fix the compilation errors for ESP OTA Requestor app * Restyled by prettier-markdown * Modify the README.md files Co-authored-by: Restyled.io --- examples/ota-provider-app/esp32/README.md | 37 ++++----- .../esp32/main/CMakeLists.txt | 3 +- .../esp32/main/Kconfig.projbuild | 6 ++ examples/ota-provider-app/esp32/main/main.cpp | 70 +++++++++--------- .../ota-provider-app/esp32/partitions.csv | 10 +-- .../esp32/spiffs_image/hello_world.bin | Bin 0 -> 169968 bytes examples/ota-requestor-app/esp32/README.md | 4 +- .../esp32/main/OTARequesterImpl.cpp | 6 +- .../ota-requestor-app/esp32/main/main.cpp | 13 ++++ 9 files changed, 80 insertions(+), 69 deletions(-) create mode 100644 examples/ota-provider-app/esp32/spiffs_image/hello_world.bin diff --git a/examples/ota-provider-app/esp32/README.md b/examples/ota-provider-app/esp32/README.md index 5cf19e3aebe287..7ae2797c93b959 100644 --- a/examples/ota-provider-app/esp32/README.md +++ b/examples/ota-provider-app/esp32/README.md @@ -5,40 +5,31 @@ A prototype application that demonstrates OTA provider capabilities. ## Supported Devices - This example supports ESP32 and ESP32C3. For details please check - [here](https://github.com/shubhamdp/connectedhomeip/tree/shubhamdp-patch-1/examples/all-clusters-app/esp32#supported-devices). + [here](https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/esp32#supported-devices). -## Building the Example Application - -- If you are building for the first time please check - [Building the Example Application](https://github.com/shubhamdp/connectedhomeip/tree/shubhamdp-patch-1/examples/all-clusters-app/esp32#building-the-example-application) - guide. -- Otherwise, `idf.py build` works! +## Copy the OTA image -## Flashing the Example Application +- Copy the binary file which you are going to send to the OTA Requestor to + `./spiffs_image` path and make sure the `OTA_IMAGE_NAME` is the same as the + name of the image file you placed in `./spiffs_image`. ``` -idf.py -p flash +idf.py menuconfig ``` -## Flashing the hello-world.bin OTA image - -Flash hello-world OTA image on OTA Provider's "ota_data" flash partition. Please -find hello-world.bin -[here](http://shubhamdp.github.io/esp_ota/esp32/hello-world-flash-in-ota-provider-partition.bin). -This OTA image is built for ESP32, it will not work on other devices. This is -the OTA upgrade image and will be sent to OTA requestor. +- Edit the `OTA_IMAGE_NAME` through `Demo`->`OTA image file name`. -``` -esptool.py -p write_flash 0x206400 hello-world-flash-in-ota-provider-partition.bin -``` +## Building the Example Application -NOTE: This is a modified binary which contains the size of OTA image at first 4 -bytes. +- If you are building for the first time please check + [Building the Example Application](https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/esp32#building-the-example-application) + guide. +- Otherwise, `idf.py build` works! -Run the idf monitor +## Flashing the Example Application ``` -idf.py -p monitor +idf.py -p flash ``` ## Commissioning over BLE using chip-tool diff --git a/examples/ota-provider-app/esp32/main/CMakeLists.txt b/examples/ota-provider-app/esp32/main/CMakeLists.txt index a85dcdb35d4b82..9b4998f94db781 100644 --- a/examples/ota-provider-app/esp32/main/CMakeLists.txt +++ b/examples/ota-provider-app/esp32/main/CMakeLists.txt @@ -45,7 +45,8 @@ idf_component_register(PRIV_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/ota-provider-app/ota-provider-common" EXCLUDE_SRCS "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp" - PRIV_REQUIRES chip QRCode bt console) + PRIV_REQUIRES chip QRCode bt console spiffs) +spiffs_create_partition_image(img_storage ../spiffs_image FLASH_IN_PROJECT) set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 14) target_compile_options(${COMPONENT_LIB} PRIVATE "-DLWIP_IPV6_SCOPES=0" "-DCHIP_HAVE_CONFIG_H") diff --git a/examples/ota-provider-app/esp32/main/Kconfig.projbuild b/examples/ota-provider-app/esp32/main/Kconfig.projbuild index 96a7f14d5c69ec..b5a506f24a24fc 100644 --- a/examples/ota-provider-app/esp32/main/Kconfig.projbuild +++ b/examples/ota-provider-app/esp32/main/Kconfig.projbuild @@ -47,4 +47,10 @@ menu "Demo" default 4 if RENDEZVOUS_MODE_THREAD default 8 if RENDEZVOUS_MODE_ETHERNET + config OTA_IMAGE_NAME + string "OTA image file name" + default "hello_world.bin" + help + Name of OTA image file which will be added to '/spiffs_image/' and sent to the OTA Requestor. + endmenu diff --git a/examples/ota-provider-app/esp32/main/main.cpp b/examples/ota-provider-app/esp32/main/main.cpp index d50b11c3d3a730..3f5c8deae79636 100644 --- a/examples/ota-provider-app/esp32/main/main.cpp +++ b/examples/ota-provider-app/esp32/main/main.cpp @@ -21,6 +21,7 @@ #include "esp_log.h" #include "esp_netif.h" #include "esp_spi_flash.h" +#include "esp_spiffs.h" #include "esp_system.h" #include "esp_wifi.h" #include "freertos/FreeRTOS.h" @@ -60,7 +61,8 @@ void OnTransferComplete(void * context); void OnTransferFailed(void * context, BdxSenderErrorTypes status); namespace { -const char * TAG = "ota-provider-app"; +const char * TAG = "ota-provider-app"; +const uint8_t kMaxImagePathlen = 35; static DeviceCallbacks EchoCallbacks; BdxOtaSender bdxServer; @@ -69,10 +71,11 @@ 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 = "hello-world.bin"; -const esp_partition_t * otaPartition = nullptr; +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); chip::Callback::Callback onTransferCompleteCallback(OnTransferComplete, nullptr); @@ -83,22 +86,17 @@ CHIP_ERROR OnBlockQuery(void * context, chip::System::PacketBufferHandle & block { if (otaTransferInProgress == false) { - if (otaPartition == nullptr || otaImageLen == 0) + if (otaImageFile == NULL || otaImageLen == 0) { - ESP_LOGE(TAG, "OTA partition not found"); + ESP_LOGE(TAG, "Failed to open the OTA image file"); return CHIP_ERROR_OPEN_FAILED; } otaTransferInProgress = true; } - uint16_t blockBufAvailableLength = blockBuf->AvailableDataLength(); uint16_t transferBlockSize = bdxServer.GetTransferBlockSize(); size = (blockBufAvailableLength < transferBlockSize) ? blockBufAvailableLength : transferBlockSize; - - // There are two types of messages requestor can use to query a block: `BlockQuery` and `BlockQueryWithSkip` so, - // to handle both case in a single callback offset is used which is managed by the `BdxOtaSender`. - // So, offset + size will not overflow and even if it overflows the esp_partition_read API will return an error. if (offset + size >= otaImageLen) { size = otaImageLen - offset; @@ -108,17 +106,15 @@ CHIP_ERROR OnBlockQuery(void * context, chip::System::PacketBufferHandle & block { isEof = false; } - - esp_err_t err = esp_partition_read(otaPartition, offset + sizeof(otaImageLen), blockBuf->Start(), size); - if (err != ESP_OK) + size_t size_read = fread(blockBuf->Start(), 1, size, otaImageFile); + if (size_read != size) { - ESP_LOGI(TAG, "Failed to read %d bytes from offset %d", size, offset + sizeof(otaImageLen)); + ESP_LOGE(TAG, "Failed to read %d bytes from %s", size, otaFilename); size = 0; isEof = false; return CHIP_ERROR_READ_FAILED; } - - ESP_LOGI(TAG, "Read %d bytes from offset %d", size, offset + sizeof(otaImageLen)); + ESP_LOGI(TAG, "Read %d bytes from %s", size, otaFilename); return CHIP_NO_ERROR; } @@ -157,8 +153,6 @@ extern "C" void app_main() return; } - OTAProviderExample otaProvider; - CHIPDeviceManager & deviceMgr = CHIPDeviceManager::GetInstance(); CHIP_ERROR error = deviceMgr.Init(&EchoCallbacks); @@ -188,26 +182,34 @@ extern "C" void app_main() callbacks.onTransferFailed = &onTransferFailedCallback; bdxServer.SetCallbacks(callbacks); - // If OTA image is available in flash storage then set to update available - otaPartition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, "ota_data"); - if (otaPartition != nullptr) - { - ESP_LOGI(TAG, "Partition found %s address:0x%x size:0x%x", otaPartition->label, otaPartition->address, otaPartition->size); + esp_vfs_spiffs_conf_t spiffs_conf = { + .base_path = "/spiffs", + .partition_label = NULL, + .max_files = 3, + .format_if_mount_failed = false, + }; - // TODO: Use the OTA image header specified in the specification - // Right now we are using just image length instead of full header - esp_partition_read(otaPartition, 0, &otaImageLen, sizeof(otaImageLen)); - if (otaImageLen > otaPartition->size) - { - otaImageLen = 0; - } - ESP_LOGI(TAG, "OTA image length %d bytes", otaImageLen); + err = esp_vfs_spiffs_register(&spiffs_conf); + if (err != ESP_OK) + { + ESP_LOGE(TAG, "Failed to initialize SPIFFS (%s)", esp_err_to_name(err)); + return; } - else + size_t total = 0, used = 0; + err = esp_spiffs_info(NULL, &total, &used); + ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used); + char otaImagePath[kMaxImagePathlen]; + sprintf(otaImagePath, "/spiffs/%s", otaFilename); + otaImageFile = fopen(otaImagePath, "r"); + if (otaImageFile == NULL) { - ESP_LOGE(TAG, "OTA partition not found"); + ESP_LOGE(TAG, "Failed to open %s", otaFilename); + return; } - + fseek(otaImageFile, 0, SEEK_END); + otaImageLen = ftell(otaImageFile); + rewind(otaImageFile); + ESP_LOGI(TAG, "The OTA image size: %d", otaImageLen); if (otaImageLen > 0) { otaProvider.SetQueryImageBehavior(OTAProviderExample::kRespondWithUpdateAvailable); diff --git a/examples/ota-provider-app/esp32/partitions.csv b/examples/ota-provider-app/esp32/partitions.csv index 671212345e7887..074db5a06dbe17 100644 --- a/examples/ota-provider-app/esp32/partitions.csv +++ b/examples/ota-provider-app/esp32/partitions.csv @@ -1,10 +1,8 @@ # Name, Type, SubType, Offset, Size, Flags # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap nvs, data, nvs, , 0x6000, -otadata, data, ota, , 0x2000, phy_init, data, phy, , 0x1000, -# Factory partition size about 1.9MB -factory, app, factory, , 1945K, -# OTA partition of size 1M -ota_data, data, nvs, , 1M, -# ota_1, app, ota_1, , 512K, +# Factory partition size about 1.5MB +factory, app, factory, , 1500K, +# spiffs partition to storage the image file size about 1.5MB +img_storage, data, spiffs, , 1500K, diff --git a/examples/ota-provider-app/esp32/spiffs_image/hello_world.bin b/examples/ota-provider-app/esp32/spiffs_image/hello_world.bin new file mode 100644 index 0000000000000000000000000000000000000000..79965d499bba45dcb1ba41c4193b17f30b67326d GIT binary patch literal 169968 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

vnyG_=M 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%0AQpW3sKkm4C@?%>08)kHSU{?Px>`Tk-4oA=%gpTx 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 OVD4h(>@-h$)_(*3=$CQ; literal 0 HcmV?d00001 diff --git a/examples/ota-requestor-app/esp32/README.md b/examples/ota-requestor-app/esp32/README.md index f90684378f52d0..bcea1698862d97 100644 --- a/examples/ota-requestor-app/esp32/README.md +++ b/examples/ota-requestor-app/esp32/README.md @@ -10,12 +10,12 @@ Before moving ahead, make sure you have ## Supported Devices - This example supports ESP32 and ESP32C3. For details please check - [here](https://github.com/shubhamdp/connectedhomeip/tree/shubhamdp-patch-1/examples/all-clusters-app/esp32#supported-devices). + [here](https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/esp32#supported-devices). ## Building the Example Application - If you are building for the first time please check - [Building the Example Application](https://github.com/shubhamdp/connectedhomeip/tree/shubhamdp-patch-1/examples/all-clusters-app/esp32#building-the-example-application) + [Building the Example Application](https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/esp32#building-the-example-application) guide. - Otherwise, `idf.py build` works! diff --git a/examples/ota-requestor-app/esp32/main/OTARequesterImpl.cpp b/examples/ota-requestor-app/esp32/main/OTARequesterImpl.cpp index d9edae659fc9e7..b6c84742019da4 100644 --- a/examples/ota-requestor-app/esp32/main/OTARequesterImpl.cpp +++ b/examples/ota-requestor-app/esp32/main/OTARequesterImpl.cpp @@ -32,12 +32,12 @@ using chip::ByteSpan; using chip::CharSpan; -using chip::DeviceProxy; using chip::EndpointId; using chip::FabricIndex; using chip::NodeId; using chip::OnDeviceConnected; using chip::OnDeviceConnectionFailure; +using chip::OperationalDeviceProxy; using chip::Optional; using chip::PeerId; using chip::Server; @@ -55,7 +55,7 @@ void OnQueryImageFailure(void * context, EmberAfStatus status); void OnApplyUpdateResponse(void * context, const ApplyUpdateResponse::DecodableType & response); void OnApplyUpdateRequestFailure(void * context, EmberAfStatus status); -void OnConnected(void * context, chip::DeviceProxy * deviceProxy); +void OnConnected(void * context, chip::OperationalDeviceProxy * deviceProxy); void OnConnectionFailure(void * context, NodeId deviceId, CHIP_ERROR error); void OnBlockReceived(void * context, const chip::bdx::TransferSession::BlockData & blockdata); @@ -174,7 +174,7 @@ void OnApplyUpdateRequestFailure(void * context, EmberAfStatus status) ChipLogDetail(SoftwareUpdate, "ApplyUpdateRequest failure response %" PRIu8, status); } -void OnConnected(void * context, chip::DeviceProxy * deviceProxy) +void OnConnected(void * context, chip::OperationalDeviceProxy * deviceProxy) { ChipLogDetail(SoftwareUpdate, "Callback OnConnected"); uint8_t * command = reinterpret_cast(context); diff --git a/examples/ota-requestor-app/esp32/main/main.cpp b/examples/ota-requestor-app/esp32/main/main.cpp index 3acbe4f8d0d94e..71f5e3b491b95b 100644 --- a/examples/ota-requestor-app/esp32/main/main.cpp +++ b/examples/ota-requestor-app/esp32/main/main.cpp @@ -17,6 +17,8 @@ #include "CHIPDeviceManager.h" #include "DeviceCallbacks.h" +#include "app/util/af-enums.h" +#include "app/util/af.h" #include "esp_heap_caps_init.h" #include "esp_log.h" #include "esp_netif.h" @@ -180,3 +182,14 @@ extern "C" void app_main() ESPInitConsole(); } + +// TODO: We should use the function definition in /src/app/clusters/ota-requestor/ClusterInterface.cpp +// Temporarily add this function. + +bool emberAfOtaSoftwareUpdateRequestorClusterAnnounceOtaProviderCallback( + chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, + const chip::app::Clusters::OtaSoftwareUpdateRequestor::Commands::AnnounceOtaProvider::DecodableType & commandData) +{ + emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_SUCCESS); + return true; +}