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

[ota-requestor] Add generic OTA requestor driver #13210

Merged
merged 2 commits into from
Dec 28, 2021

Conversation

Damian-Nordic
Copy link
Contributor

@Damian-Nordic Damian-Nordic commented Dec 22, 2021

Problem

One cannot perform the full OTA with a single shell command or AnnounceOTAProvider message, because there's not code that would automatically send ApplyUpdate command after a successful download. Also, DelayedActionTime arguments send in OTA Requestor responses are not respected.

Change overview

  1. Extend OTARequestorDriver interface so it can be notified of various OTA Requestor operations.
  2. Use OTARequestorDriver in OTARequestor to report results of operations.
  3. Implement GenericOTARequestorDriver that provides default behavior for handling OTARequestor events. For example, it respects DelayedActionTime arguments.
  4. Use the driver in existing examples.

Testing

Tested using:

  • OTA Provider and OTA Requestor for Linux. OTA triggered with AnnounceOTAProvider message.
  • OTA Provider for Linux and lighting-app for nRF52840 DK. OTA triggered with matter ota query 1 1 0 shell command run on the lighting-app.

1. Extend OTARequestorDriver interface so it can be notified
   of various OTA Requestor operations.
2. Use OTARequestorDriver in OTARequestor to report results
   of operations.
3. Implement GenericOTARequestorDriver that provides default
   behavior for handling OTARequestor events. For example,
   it respects DelayedActionTime arguments.
4. Use the driver in existing examples.
@github-actions
Copy link

github-actions bot commented Dec 22, 2021

PR #13210: Size comparison from 9a80f75 to 039e0ee

Full report (31 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 9a80f75 039e0ee change % change
efr32 lighting-app BRD4161A (read only) 828908 828908 0 0.0
(read/write) 127052 127052 0 0.0
.bss 125176 125176 0 0.0
.data 1876 1876 0 0.0
.text 828900 828900 0 0.0
BRD4161A+rpc (read only) 816552 816552 0 0.0
(read/write) 143720 143720 0 0.0
.bss 141744 141744 0 0.0
.data 1976 1976 0 0.0
.text 816544 816544 0 0.0
window-app BRD4161A (read only) 802372 802372 0 0.0
(read/write) 125992 125992 0 0.0
.bss 124160 124160 0 0.0
.data 1832 1832 0 0.0
.text 802364 802364 0 0.0
esp32 all-clusters-app c3devkit (read only) 884898 884898 0 0.0
(read/write) 1312410 1312410 0 0.0
.dram0.bss 69072 69072 0 0.0
.dram0.data 14220 14220 0 0.0
.flash.rodata 176064 176064 0 0.0
.flash.text 884898 884898 0 0.0
.iram0.text 62254 62254 0 0.0
m5stack (read only) 945471 945471 0 0.0
(read/write) 441528 441528 0 0.0
.dram0.bss 73568 73568 0 0.0
.dram0.data 34056 34056 0 0.0
.flash.rodata 202896 202896 0 0.0
.flash.text 940087 940087 0 0.0
.iram0.text 122671 122671 0 0.0
k32w light k32w061+release (read/write) 647520 647520 0 0.0
.bss 76184 76184 0 0.0
.data 1904 1904 0 0.0
.text 563632 563632 0 0.0
lock k32w061+release (read/write) 632248 632248 0 0.0
.bss 75896 75896 0 0.0
.data 1860 1860 0 0.0
.text 548692 548692 0 0.0
linux chip-tool-ipv6only arm64 (read only) 6997300 6997300 0 0.0
(read/write) 325841 325841 0 0.0
.bss 54209 54209 0 0.0
.data 1096 1096 0 0.0
.data.rel.ro 210056 210056 0 0.0
.dynamic 560 560 0 0.0
.got 56776 56776 0 0.0
.init 24 24 0 0.0
.init_array 168 168 0 0.0
.rodata 383884 383884 0 0.0
.text 5920036 5920036 0 0.0
thermostat-no-ble arm64 (read only) 2011508 2011508 0 0.0
(read/write) 143937 143937 0 0.0
.bss 63985 63985 0 0.0
.data 880 880 0 0.0
.data.rel.ro 72200 72200 0 0.0
.dynamic 560 560 0 0.0
.got 3936 3936 0 0.0
.init 24 24 0 0.0
.init_array 296 296 0 0.0
.rodata 128468 128468 0 0.0
.text 1670512 1670512 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2341360 2341360 0 0.0
.bss 188332 188332 0 0.0
.data 5280 5280 0 0.0
.text 1303936 1303936 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2329160 2329160 0 0.0
.bss 180608 180608 0 0.0
.data 5552 5552 0 0.0
.text 1291760 1291760 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2302192 2302192 0 0.0
.bss 179656 179656 0 0.0
.data 5544 5544 0 0.0
.text 1264792 1264792 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1140008 1140008 0 0.0
.bss 11756 11756 0 0.0
.data 4368 4368 0 0.0
.text 103392 103392 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2053888 2053888 0 0.0
.bss 156972 156972 0 0.0
.data 4864 4864 0 0.0
.text 1016488 1016488 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 935343 935343 0 0.0
bss 118172 118172 0 0.0
rodata 107996 107996 0 0.0
text 631620 631620 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 921747 921747 0 0.0
bss 115216 115216 0 0.0
rodata 101416 101416 0 0.0
text 626932 626932 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 859110 859110 0 0.0
bss 116456 116456 0 0.0
rodata 102924 102924 0 0.0
text 559060 559060 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 907491 907491 0 0.0
bss 117360 117360 0 0.0
rodata 103304 103304 0 0.0
text 609448 609448 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 831406 831406 0 0.0
bss 115672 115672 0 0.0
rodata 98268 98268 0 0.0
text 536924 536924 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 542351 542351 0 0.0
bss 52588 52588 0 0.0
rodata 50668 50668 0 0.0
text 376892 376892 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 908755 908755 0 0.0
bss 117120 117120 0 0.0
rodata 103520 103520 0 0.0
text 610684 610684 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 905571 905571 0 0.0
bss 117148 117148 0 0.0
rodata 102776 102776 0 0.0
text 608196 608196 0 0.0
shell nrf52840dk_nrf52840 (read/write) 796871 796871 0 0.0
bss 109536 109536 0 0.0
rodata 78200 78200 0 0.0
text 532680 532680 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 709502 709502 0 0.0
bss 107424 107424 0 0.0
rodata 72500 72500 0 0.0
text 450172 450172 0 0.0
p6 all-clusters-app default (read/write) 2393688 2393688 0 0.0
.bss 116532 116532 0 0.0
.data 2552 2552 0 0.0
.text 1351952 1351952 0 0.0
light-app default (read/write) 2323648 2323648 0 0.0
.bss 105856 105856 0 0.0
.data 2384 2384 0 0.0
.text 1281912 1281912 0 0.0
lock-app default (read/write) 2295864 2295864 0 0.0
.bss 104736 104736 0 0.0
.data 2336 2336 0 0.0
.text 1254128 1254128 0 0.0
qpg lighting-app qpg6105+debug (read only) 531192 531192 0 0.0
(read/write) 146936 146936 0 0.0
.bss 86656 86656 0 0.0
.data 1004 1004 0 0.0
.text 525872 525872 0 0.0
lock-app qpg6105+debug (read only) 502860 502860 0 0.0
(read/write) 146940 146940 0 0.0
.bss 85792 85792 0 0.0
.data 952 952 0 0.0
.text 497540 497540 0 0.0
persistent-storage-app qpg6105+debug (read only) 106448 106448 0 0.0
(read/write) 146938 146938 0 0.0
.bss 36146 36146 0 0.0
.data 288 288 0 0.0
.text 101128 101128 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 831682 831682 0 0.0
bss 86840 86840 0 0.0
noinit 37160 37160 0 0.0
text 580162 580162 0 0.0

@selissia
Copy link
Contributor

This addresses #9527

@Damian-Nordic Damian-Nordic merged commit eab67b3 into project-chip:master Dec 28, 2021
lmpprk pushed a commit to lmpprk/connectedhomeip that referenced this pull request Dec 29, 2021
* [ota-requestor] Add generic OTA requestor driver

1. Extend OTARequestorDriver interface so it can be notified
   of various OTA Requestor operations.
2. Use OTARequestorDriver in OTARequestor to report results
   of operations.
3. Implement GenericOTARequestorDriver that provides default
   behavior for handling OTARequestor events. For example,
   it respects DelayedActionTime arguments.
4. Use the driver in existing examples.

* Restyled by whitespace

Co-authored-by: Restyled.io <[email protected]>
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.

4 participants