Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESP32: OTA Requestor and OTA Provider example applications #11320

Merged
merged 9 commits into from
Nov 15, 2021

Conversation

shubhamdp
Copy link
Contributor

@shubhamdp shubhamdp commented Nov 2, 2021

Problem

Adding OTA Requestor and OTA Provider example applications for ESP32

Change overview

  • Added OTA Requestor example application for ESP32
  • Added OTA Provider example application for ESP32
  • Added callbacks for writing data to bdx from platform storage (file in case of linux and flash in case of ESP32)
  • Added callbacks for reading data from bdx to platform (file in case of linux and flash in case of ESP32)

Testing

  • Tested manually
  • Flashed requestor and provider on separate ESP32 and commissioned using CHIP-TOOL.
  • Fired a command QueryImage and ApplyUpdateRequest to start and apply data transfer

TODO

  • Update README.md for both ESP32 provider and requestor.

@todo
Copy link

todo bot commented Nov 2, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

handle this callback in switch statement

// TODO handle this callback in switch statement
ESP_LOGI(TAG, "Unhandled cluster ID: %d", clusterId);
ESP_LOGI(TAG, "Current free heap: %d\n", heap_caps_get_free_size(MALLOC_CAP_8BIT));
}
void DeviceCallbacks::OnInternetConnectivityChange(const ChipDeviceEvent * event)
{
if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established)
{
ESP_LOGI(TAG, "Server ready at: %s:%d", event->InternetConnectivityChange.address, CHIP_PORT);


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

this should probably be done dynamically

// 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); // Specifications mandates >= 5 minutes
constexpr chip::System::Clock::Timeout kBdxPollFreq = chip::System::Clock::Milliseconds32(500);
const char *gOtaFilename = "hello-world.bin";
BdxOtaSender bdxServer;
const esp_partition_t *otaPartition = nullptr;
uint32_t otaImageLen = 0;


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

Use the OTA image header specified in specifications

// TODO: Use the OTA image header specified in specifications
// 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);
}
else
{
ESP_LOGE(TAG, "OTA partition not found");


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

handle this callback in switch statement

// TODO handle this callback in switch statement
ESP_LOGI(TAG, "Unhandled cluster ID: %d", clusterId);
ESP_LOGI(TAG, "Current free heap: %d\n", heap_caps_get_free_size(MALLOC_CAP_8BIT));
}
void DeviceCallbacks::OnInternetConnectivityChange(const ChipDeviceEvent * event)
{
if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established)
{
ESP_LOGI(TAG, "Server ready at: %s:%d", event->InternetConnectivityChange.address, CHIP_PORT);


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

support this as a list once ember adds list support

constexpr uint8_t kExampleProtocolsSupported = EMBER_ZCL_OTA_DOWNLOAD_PROTOCOL_BDX_SYNCHRONOUS; // TODO: support this as a list once ember adds list support
const char locationBuf[] = { 'U', 'S' };
CharSpan exampleLocation(locationBuf);
constexpr bool kExampleClientCanConsent = false;
ByteSpan metadata;
err = cluster.QueryImage(successCallback, failureCallback, kExampleVendorId, kExampleProductId, kExampleHWVersion,
kExampleSoftwareVersion, kExampleProtocolsSupported, exampleLocation,
kExampleClientCanConsent, metadata);
if (err != CHIP_NO_ERROR)
{


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

Encapsulate these globals and the callbacks in some class

// TODO: Encapsulate these globals and the callbacks in some class
OperationalDeviceProxy gOperationalDeviceProxy;
ExchangeContext * exchangeCtx = nullptr;
BdxDownloader bdxDownloader;
uint8_t operationalDeviceContext; // 0 - none, 1 - QueryImage, 2 - ApplyUpdateRequest, 3 - NotifyUpdateApplied
ByteSpan otaUpdateToken;
/* Callbacks for QueryImage response */
Callback<OtaSoftwareUpdateProviderClusterQueryImageResponseCallback> mQueryImageResponseCallback(OnQueryImageResponse, nullptr);
Callback<DefaultFailureCallback> mOnQueryImageFailureCallback(OnQueryImageFailure, nullptr);


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

Apply update after delayed action time

// TODO: Apply update after delayed action time
// TODO: Handle applying update after reboot
esp_err_t OTAUpdater::Apply(uint32_t delayedActionTime)
{
if (mOTAUpdateInProgress == true)
{
return ESP_ERR_INVALID_STATE;
}
esp_err_t err = esp_ota_set_boot_partition(mOTAUpdatePartition);
if (err != ESP_OK)


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

Handle applying update after reboot

// TODO: Handle applying update after reboot
esp_err_t OTAUpdater::Apply(uint32_t delayedActionTime)
{
if (mOTAUpdateInProgress == true)
{
return ESP_ERR_INVALID_STATE;
}
esp_err_t err = esp_ota_set_boot_partition(mOTAUpdatePartition);
if (err != ESP_OK)
{


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

With this approach we might end up adding callback for every bdx event/message.

// TODO: With this approach we might end up adding callback for every bdx event/message.
// Can be refactored into a single callback with events
struct BdxDownloaderCallbacks
{
chip::Callback::Callback<OnBdxBlockReceived> * onBlockReceived = nullptr;
chip::Callback::Callback<OnBdxTransferComplete> * onTransferComplete = nullptr;
chip::Callback::Callback<OnBdxTransferFailed> * onTransferFailed = nullptr;
};
class BdxDownloader : public chip::bdx::Initiator
{


This comment was generated by todo based on a TODO comment in 70e6874 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in d42865d in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 2, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in d42865d in #11320. cc @shubhamdp.

@dhrishi
Copy link
Contributor

dhrishi commented Nov 12, 2021

Can we merge this?

@bzbarsky-apple
Copy link
Contributor

Can we merge this?

Needs to pass CI...

@todo
Copy link

todo bot commented Nov 15, 2021

AbortTransfer() needs to support GeneralStatusCode failures as well as BDX specific errors.

// TODO: AbortTransfer() needs to support GeneralStatusCode failures as well as BDX specific errors.
mTransfer.AbortTransfer(StatusCode::kUnknown);
return;
}
if (mOnBlockQueryCallback != nullptr && mOnBlockQueryCallback->mCall != nullptr)
{
if (CHIP_NO_ERROR !=
mOnBlockQueryCallback->mCall(mOnBlockQueryCallback->mContext, blockBuf, blockData.Length, blockData.IsEof,
mNumBytesSent))
{


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@boring-cyborg boring-cyborg bot added the github label Nov 15, 2021
@todo
Copy link

todo bot commented Nov 15, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

while convenient, we should not do a synchronous block write in our example application - this is bad practice

// TODO: while convenient, we should not do a synchronous block write in our example application - this is bad practice
if (mOnBlockReceivedCallback != nullptr && mOnBlockReceivedCallback->mCall != nullptr)
{
mOnBlockReceivedCallback->mCall(mOnBlockReceivedCallback->mContext, event.blockdata);
}
else
{
ChipLogError(BDX, "onBlockReceived Callback not set");
}
if (event.blockdata.IsEof)
{


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

Handle image URI for protocol other than bdx

// TODO: Handle image URI for protocol other than bdx
// Ignore the first 23 "bdx://<NodeId>/"
char fileDesignator[128]; // 128 is arbitrary value
memset(fileDesignator, 0, sizeof(fileDesignator));
size_t fileDesignatorLength = response.imageURI.Value().size() - 23 + 1; // + 1 for \0
if ((response.imageURI.Value().size() - 23) > sizeof(fileDesignator))
{
fileDesignatorLength = sizeof(fileDesignator);
}
strlcpy(fileDesignator, response.imageURI.Value().data() + 23, fileDesignatorLength);


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

Determine where this should be instantiated

// TODO: Determine where this should be instantiated
.imDelegate = chip::Platform::New<chip::Controller::DeviceControllerInteractionModelDelegate>(),
};
PeerId peerID = fabric->GetPeerId();
peerID.SetNodeId(providerNodeId);
operationalDeviceProxy = new chip::OperationalDeviceProxy(initParams, peerID);
server->SetOperationalDeviceProxy(operationalDeviceProxy);
// Explicitly calling UpdateDeviceData() should not be needed once OperationalDeviceProxy can resolve IP address from node
// ID and fabric index


This comment was generated by todo based on a TODO comment in 2e892ef in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

AbortTransfer() needs to support GeneralStatusCode failures as well as BDX specific errors.

// TODO: AbortTransfer() needs to support GeneralStatusCode failures as well as BDX specific errors.
mTransfer.AbortTransfer(StatusCode::kUnknown);
return;
}
if (mOnBlockQueryCallback != nullptr && mOnBlockQueryCallback->mCall != nullptr)
{
if (CHIP_NO_ERROR !=
mOnBlockQueryCallback->mCall(mOnBlockQueryCallback->mContext, blockBuf, blockData.Length, blockData.IsEof,
mNumBytesSent))
{


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

while convenient, we should not do a synchronous block write in our example application - this is bad practice

// TODO: while convenient, we should not do a synchronous block write in our example application - this is bad practice
if (mOnBlockReceivedCallback != nullptr && mOnBlockReceivedCallback->mCall != nullptr)
{
mOnBlockReceivedCallback->mCall(mOnBlockReceivedCallback->mContext, event.blockdata);
}
else
{
ChipLogError(BDX, "onBlockReceived Callback not set");
}
if (event.blockdata.IsEof)
{


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

(cecille): Fix for the case where BLE and SoftAP are both enabled.`

// TODO(cecille): Fix for the case where BLE and SoftAP are both enabled.`
ConnectivityMgr().SetBLEAdvertisingEnabled(false);
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}
else
{
// If rendezvous is bypassed, enable SoftAP so that the device can still
// be communicated with via its SoftAP as needed.
ConnectivityMgr().SetWiFiAPMode(ConnectivityManager::kWiFiAPMode_Enabled);
}


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

Handle image URI for protocol other than bdx

// TODO: Handle image URI for protocol other than bdx
// Ignore the first 23 "bdx://<NodeId>/"
char fileDesignator[128]; // 128 is arbitrary value
memset(fileDesignator, 0, sizeof(fileDesignator));
size_t fileDesignatorLength = response.imageURI.Value().size() - 23 + 1; // + 1 for \0
if ((response.imageURI.Value().size() - 23) > sizeof(fileDesignator))
{
fileDesignatorLength = sizeof(fileDesignator);
}
strlcpy(fileDesignator, response.imageURI.Value().data() + 23, fileDesignatorLength);


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@todo
Copy link

todo bot commented Nov 15, 2021

Determine where this should be instantiated

// TODO: Determine where this should be instantiated
.imDelegate = chip::Platform::New<chip::Controller::DeviceControllerInteractionModelDelegate>(),
};
PeerId peerID = fabric->GetPeerId();
peerID.SetNodeId(providerNodeId);
operationalDeviceProxy = new chip::OperationalDeviceProxy(initParams, peerID);
server->SetOperationalDeviceProxy(operationalDeviceProxy);
// Explicitly calling UpdateDeviceData() should not be needed once OperationalDeviceProxy can resolve IP address from node
// ID and fabric index


This comment was generated by todo based on a TODO comment in 5b6c900 in #11320. cc @shubhamdp.

@github-actions
Copy link

github-actions bot commented Nov 15, 2021

PR #11320: Size comparison from 5623978 to 5b6c900

Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 5623978 5b6c900 change % change
efr32 lighting-app BRD4161A (read only) 750088 750088 0 0.0
(read/write) 115940 115940 0 0.0
.bss 114140 114140 0 0.0
.data 1800 1800 0 0.0
.text 750080 750080 0 0.0
BRD4161A+rpc (read only) 737636 737636 0 0.0
(read/write) 132568 132568 0 0.0
.bss 130644 130644 0 0.0
.data 1924 1924 0 0.0
.text 737628 737628 0 0.0
lock-app BRD4161A (read only) 726752 726752 0 0.0
(read/write) 113724 113724 0 0.0
.bss 111964 111964 0 0.0
.data 1756 1756 0 0.0
.text 726744 726744 0 0.0
window-app BRD4161A (read only) 727744 727744 0 0.0
(read/write) 114044 114044 0 0.0
.bss 112284 112284 0 0.0
.data 1760 1760 0 0.0
.text 727736 727736 0 0.0
esp32 all-clusters-app c3devkit (read only) 826956 826956 0 0.0
(read/write) 1224466 1224466 0 0.0
.dram0.bss 57088 57088 0 0.0
.dram0.data 14092 14092 0 0.0
.flash.rodata 168040 168040 0 0.0
.flash.text 826956 826956 0 0.0
.iram0.text 61394 61394 0 0.0
m5stack (read only) 897631 897631 0 0.0
(read/write) 422624 422624 0 0.0
.dram0.bss 62184 62184 0 0.0
.dram0.data 34056 34056 0 0.0
.flash.rodata 195060 195060 0 0.0
.flash.text 892247 892247 0 0.0
.iram0.text 122987 122987 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 702540 702540 0 0.0
.bss 77508 77508 0 0.0
.data 1908 1908 0 0.0
.text 617324 617324 0 0.0
lock-app k32w061+debug (read/write) 593548 593548 0 0.0
.bss 68028 68028 0 0.0
.data 1876 1876 0 0.0
.text 517844 517844 0 0.0
shell k32w061+debug (read/write) 659232 659232 0 0.0
.bss 78820 78820 0 0.0
.data 1844 1844 0 0.0
.text 572768 572768 0 0.0
linux all-clusters-app debug (read only) 1722337 1722337 0 0.0
(read/write) 126816 126816 0 0.0
.bss 57776 57776 0 0.0
.data 1042 1042 0 0.0
.data.rel.ro 62720 62720 0 0.0
.dynamic 592 592 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 552 552 0 0.0
.rodata 140277 140277 0 0.0
.text 1447842 1447842 0 0.0
bridge-app debug+rpc (read only) 1312741 1312741 0 0.0
(read/write) 77424 77424 0 0.0
.bss 42896 42896 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 27960 27960 0 0.0
.dynamic 592 592 0 0.0
.got 3984 3984 0 0.0
.init 27 27 0 0.0
.init_array 408 408 0 0.0
.rodata 111860 111860 0 0.0
.text 1103909 1103909 0 0.0
chip-tool debug (read only) 4921493 4921493 0 0.0
(read/write) 167208 167208 0 0.0
.bss 41192 41192 0 0.0
.data 2272 2272 0 0.0
.data.rel.ro 118256 118256 0 0.0
.dynamic 592 592 0 0.0
.got 4416 4416 0 0.0
.init 27 27 0 0.0
.init_array 472 472 0 0.0
.rodata 268242 268242 0 0.0
.text 4343605 4343605 0 0.0
lighting-app debug+rpc (read only) 1582281 1582281 0 0.0
(read/write) 110192 110192 0 0.0
.bss 48080 48080 0 0.0
.data 1234 1234 0 0.0
.data.rel.ro 55552 55552 0 0.0
.dynamic 608 608 0 0.0
.got 4136 4136 0 0.0
.init 27 27 0 0.0
.init_array 536 536 0 0.0
.rodata 129841 129841 0 0.0
.text 1317746 1317746 0 0.0
ota-provider-app debug (read only) 1267337 1267337 0 0.0
(read/write) 75176 75176 0 0.0
.bss 44512 44512 0 0.0
.data 784 784 0 0.0
.data.rel.ro 24776 24776 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 448 448 0 0.0
.rodata 113383 113383 0 0.0
.text 1057106 1057106 0 0.0
ota-requestor-app debug (read only) 1352009 1352009 0 0.0
(read/write) 78944 78944 0 0.0
.bss 46976 46976 0 0.0
.data 848 848 0 0.0
.data.rel.ro 26040 26040 0 0.0
.dynamic 592 592 0 0.0
.got 3992 3992 0 0.0
.init 27 27 0 0.0
.init_array 472 472 0 0.0
.rodata 124208 124208 0 0.0
.text 1128402 1128402 0 0.0
shell debug (read only) 789081 789081 0 0.0
(read/write) 65064 65064 0 0.0
.bss 23400 23400 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36928 36928 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 344 344 0 0.0
.rodata 77903 77903 0 0.0
.text 609282 609282 0 0.0
tv-app debug (read only) 1858569 1858569 0 0.0
(read/write) 407896 407896 0 0.0
.bss 339752 339752 0 0.0
.data 2768 2768 0 0.0
.data.rel.ro 59696 59696 0 0.0
.dynamic 592 592 0 0.0
.got 4432 4432 0 0.0
.init 27 27 0 0.0
.init_array 616 616 0 0.0
.rodata 157069 157069 0 0.0
.text 1556418 1556418 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2292200 2292200 0 0.0
.bss 179692 179692 0 0.0
.data 5216 5216 0 0.0
.heap 851536 851536 0 0.0
.text 1254800 1254800 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2274688 2274688 0 0.0
.bss 172556 172556 0 0.0
.data 5576 5576 0 0.0
.heap 858312 858312 0 0.0
.text 1237288 1237288 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2250128 2250128 0 0.0
.bss 171436 171436 0 0.0
.data 5568 5568 0 0.0
.heap 859440 859440 0 0.0
.text 1212728 1212728 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139744 1139744 0 0.0
.bss 11752 11752 0 0.0
.data 4368 4368 0 0.0
.heap 1020328 1020328 0 0.0
.text 103128 103128 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2048376 2048376 0 0.0
.bss 155912 155912 0 0.0
.data 4968 4968 0 0.0
.heap 875568 875568 0 0.0
.text 1010976 1010976 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 865175 865175 0 0.0
bss 110964 110964 0 0.0
rodata 97080 97080 0 0.0
text 581516 581516 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 827567 827567 0 0.0
bss 107320 107320 0 0.0
rodata 88272 88272 0 0.0
text 555688 555688 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 790234 790234 0 0.0
bss 112340 112340 0 0.0
rodata 92340 92340 0 0.0
text 510984 510984 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 840199 840199 0 0.0
bss 109988 109988 0 0.0
rodata 93144 93144 0 0.0
text 561616 561616 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 765514 765514 0 0.0
bss 111400 111400 0 0.0
rodata 88452 88452 0 0.0
text 491176 491176 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497327 497327 0 0.0
bss 51824 51824 0 0.0
rodata 45780 45780 0 0.0
text 339436 339436 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 846327 846327 0 0.0
bss 110128 110128 0 0.0
rodata 94856 94856 0 0.0
text 565800 565800 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 839903 839903 0 0.0
bss 110024 110024 0 0.0
rodata 93104 93104 0 0.0
text 561236 561236 0 0.0
shell nrf52840dk_nrf52840 (read/write) 775499 775499 0 0.0
bss 108736 108736 0 0.0
rodata 72160 72160 0 0.0
text 520020 520020 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 690554 690554 0 0.0
bss 109720 109720 0 0.0
rodata 66804 66804 0 0.0
text 440628 440628 0 0.0
p6 all-clusters-app default (read/write) 2301232 2301232 0 0.0
.bss 112680 112680 0 0.0
.data 2520 2520 0 0.0
.heap 918144 918144 0 0.0
.text 1259496 1259496 0 0.0
lock-app default (read/write) 2214704 2214704 0 0.0
.bss 101296 101296 0 0.0
.data 2400 2400 0 0.0
.heap 929648 929648 0 0.0
.text 1172968 1172968 0 0.0
qpg lighting-app qpg6100+debug (read only) 494216 494216 0 0.0
(read/write) 114144 114144 0 0.0
.bss 50640 50640 0 0.0
.data 1008 1008 0 0.0
.text 488896 488896 0 0.0
lock-app qpg6100+debug (read only) 468752 468752 0 0.0
(read/write) 114140 114140 0 0.0
.bss 49576 49576 0 0.0
.data 964 964 0 0.0
.text 463432 463432 0 0.0
persistent-storage-app qpg6100+debug (read only) 105408 105408 0 0.0
(read/write) 114142 114142 0 0.0
.bss 8978 8978 0 0.0
.data 272 272 0 0.0
.text 100088 100088 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 667854 667854 0 0.0
bss 69320 69320 0 0.0
noinit 33216 33216 0 0.0
text 462372 462372 0 0.0

@shubhamdp
Copy link
Contributor Author

shubhamdp commented Nov 15, 2021

Needs to pass CI...

All the CI checks passed, can we merge now?

@andy31415 andy31415 merged commit cde357f into project-chip:master Nov 15, 2021
@shubhamdp shubhamdp deleted the task/esp32_ota_apps branch November 18, 2021 05:26
PSONALl pushed a commit to PSONALl/connectedhomeip that referenced this pull request Dec 3, 2021
…hip#11320)

* Added OTA requester and provider app for esp32

* Apply suggestions from code review

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Addressed review comments

* Addressed review comments

* Apply suggestions from code review

Co-authored-by: Carol Yang <clyang@apple.com>

* Restyled by clang-format

* Addressed review comments

* Added few words to spellcheck dictionary

* Added .gitignore files to esp32 ota apps

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
Co-authored-by: Carol Yang <clyang@apple.com>
Co-authored-by: Restyled.io <commits@restyled.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ota-requestor-app] support ESP32 [ota-provider-app] Support ESP32
10 participants