Skip to content

Commit b8ddefd

Browse files
committed
Added changes for the wifi multi-ota feature
1 parent 7c1d6f7 commit b8ddefd

File tree

7 files changed

+58
-10
lines changed

7 files changed

+58
-10
lines changed

examples/platform/silabs/SiWx917/BUILD.gn

+4
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ config("siwx917-common-config") {
9191
defines += [ "HEAP_MONITORING" ]
9292
}
9393

94+
if (chip_enable_multi_ota_requestor) {
95+
defines += [ "CHIP_DEVICE_CONFIG_ENABLE_MULTI_OTA_REQUESTOR=1" ]
96+
}
97+
9498
ldflags = [ "-Wl,--no-warn-rwx-segment" ]
9599
}
96100

src/platform/silabs/SiWx917/BUILD.gn

+11-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,17 @@ static_library("SiWx917") {
7777
"SiWxPlatformInterface.h",
7878
]
7979

80-
if (chip_enable_ota_requestor) {
80+
if (chip_enable_multi_ota_requestor) {
81+
sources += [
82+
"${silabs_platform_dir}/multi-ota/OTAMultiImageProcessorImpl.cpp",
83+
"${silabs_platform_dir}/multi-ota/OTAMultiImageProcessorImpl.h",
84+
"${silabs_platform_dir}/multi-ota/OTATlvProcessor.cpp",
85+
"${silabs_platform_dir}/multi-ota/OTATlvProcessor.h",
86+
"${silabs_platform_dir}/multi-ota/SiWx917/OTAWiFiFirmwareProcessor.cpp",
87+
"${silabs_platform_dir}/multi-ota/SiWx917/OTAWiFiFirmwareProcessor.h",
88+
"${silabs_platform_dir}/multi-ota/OTAHooks.cpp",
89+
]
90+
} else if (chip_enable_ota_requestor) { {
8191
sources += [
8292
"${silabs_platform_dir}/OTAImageProcessorImpl.h",
8393
"OTAImageProcessorImpl.cpp",

src/platform/silabs/efr32/BUILD.gn

+5-3
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,12 @@ static_library("efr32") {
104104
"${silabs_platform_dir}/multi-ota/OTATlvProcessor.cpp",
105105
"${silabs_platform_dir}/multi-ota/OTATlvProcessor.h",
106106
]
107-
} else if (chip_enable_ota_requestor) {
107+
}
108+
109+
if (chip_enable_wifi) {
108110
sources += [
109-
"${silabs_platform_dir}/OTAImageProcessorImpl.h",
110-
"OTAImageProcessorImpl.cpp",
111+
"${silabs_platform_dir}/multi-ota/SiWx917/OTAWiFiFirmwareProcessor.cpp",
112+
"${silabs_platform_dir}/multi-ota/SiWx917/OTAWiFiFirmwareProcessor.h",
111113
]
112114
}
113115

src/platform/silabs/multi-ota/OTAHooks.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,28 @@
2222
#include <app/clusters/ota-requestor/OTARequestorInterface.h>
2323

2424
#include <platform/silabs/multi-ota/OTAFactoryDataProcessor.h>
25+
#ifndef SLI_SI91X_MCU_INTERFACE
2526
#include <platform/silabs/multi-ota/OTAFirmwareProcessor.h>
27+
#endif
2628

29+
#if SL_WIFI
30+
#include <platform/silabs/multi-ota/SiWx917/OTAWiFiFirmwareProcessor.h>
31+
#endif
2732
#if OTA_TEST_CUSTOM_TLVS
2833
#include <platform/silabs/multi-ota/OTACustomProcessor.h>
2934
#endif
3035

3136
CHIP_ERROR chip::OTAMultiImageProcessorImpl::ProcessDescriptor(void * descriptor)
3237
{
38+
#ifndef SLI_SI91X_MCU_INTERFACE
3339
[[maybe_unused]] auto desc = static_cast<chip::OTAFirmwareProcessor::Descriptor *>(descriptor);
3440
ChipLogDetail(SoftwareUpdate, "Descriptor: %ld, %s, %s", desc->version, desc->versionString, desc->buildDate);
41+
#endif
42+
43+
#if SL_WIFI
44+
[[maybe_unused]] auto descWiFi = static_cast<chip::OTAWiFiFirmwareProcessor::Descriptor *>(descriptor);
45+
ChipLogDetail(SoftwareUpdate, "Descriptor: %ld, %s, %s", descWiFi->version, descWiFi->versionString, descWiFi->buildDate);
46+
#endif
3547

3648
return CHIP_NO_ERROR;
3749
}

src/platform/silabs/multi-ota/OTAMultiImageProcessorImpl.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include <platform/DiagnosticDataProvider.h>
2323
#include <platform/internal/CHIPDeviceLayerInternal.h>
2424
#include <platform/internal/GenericConfigurationManagerImpl.h>
25-
2625
#include <platform/silabs/multi-ota/OTAMultiImageProcessorImpl.h>
2726

2827
using namespace chip::DeviceLayer;
@@ -35,7 +34,9 @@ static chip::OTAMultiImageProcessorImpl gImageProcessor;
3534
#endif // SL_WIFI
3635

3736
extern "C" {
38-
#include "btl_interface.h"
37+
#ifndef SLI_SI91X_MCU_INTERFACE // required for 917 NCP
38+
#include "btl_interface.h"
39+
#endif // SLI_SI91X_MCU_INTERFACE
3940
#include "sl_core.h"
4041
}
4142

@@ -202,6 +203,7 @@ CHIP_ERROR OTAMultiImageProcessorImpl::SelectProcessor(ByteSpan & block)
202203

203204
CHIP_ERROR OTAMultiImageProcessorImpl::RegisterProcessor(uint32_t tag, OTATlvProcessor * processor)
204205
{
206+
ChipLogDetail(SoftwareUpdate, "RegisterProcessor with tag: %ld", tag);
205207
auto pair = mProcessorMap.find(tag);
206208
if (pair != mProcessorMap.end())
207209
{
@@ -422,7 +424,9 @@ void OTAMultiImageProcessorImpl::HandleApply(intptr_t context)
422424
ChipLogProgress(SoftwareUpdate, "HandleApply: Finished");
423425

424426
// This reboots the device
427+
#ifndef SLI_SI91X_MCU_INTERFACE // required for 917 NCP
425428
CORE_CRITICAL_SECTION(bootloader_rebootAndInstall();)
429+
#endif
426430
}
427431

428432
CHIP_ERROR OTAMultiImageProcessorImpl::ReleaseBlock()

src/platform/silabs/multi-ota/OTATlvProcessor.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,13 @@ struct OTATlvHeader
6262
uint32_t length;
6363
};
6464

65-
// TLV tags synced with ota files generate by scripts/tools/silabs/ota/ota_image_tool.py
65+
// TLV tags synced with ota files generated by scripts/tools/silabs/ota/ota_image_tool.py
6666
enum class OTAProcessorTag
6767
{
6868
kApplicationProcessor = 1,
6969
kBootloaderProcessor = 2,
70-
kFactoryDataProcessor = 3
70+
kFactoryDataProcessor = 3,
71+
kWiFiProcessor = 4
7172
};
7273

7374
/**

third_party/silabs/efr32_sdk.gni

+17-2
Original file line numberDiff line numberDiff line change
@@ -550,8 +550,14 @@ template("efr32_sdk") {
550550
defines += [ "SL_MATTER_ENABLE_OTA_ENCRYPTION=1" ]
551551
}
552552

553-
if (chip_enable_ota_custom_tlv_testing && chip_enable_multi_ota_requestor) {
554-
defines += [ "OTA_TEST_CUSTOM_TLVS=1" ]
553+
if (chip_enable_multi_ota_requestor) {
554+
if(chip_enable_multi_ota_encryption) {
555+
defines += [ "SL_MATTER_ENABLE_OTA_ENCRYPTION=1" ]
556+
}
557+
558+
if (chip_enable_ota_custom_tlv_testing) {
559+
defines += [ "OTA_TEST_CUSTOM_TLVS=1" ]
560+
}
555561
}
556562

557563
if (defined(invoker.chip_enable_wifi) && invoker.chip_enable_wifi) {
@@ -880,6 +886,15 @@ template("efr32_sdk") {
880886
"${silabs_gen_folder}/autogen/sl_event_handler.c",
881887
"${silabs_gen_folder}/autogen/sl_iostream_handles.c",
882888
]
889+
890+
if (chip_enable_multi_ota_requestor) {
891+
if (use_SiWx917) {
892+
sources += [
893+
"${wifi_sdk_root}/components/device/silabs/si91x/wireless/firmware_upgrade/firmware_upgradation.c",
894+
]
895+
}
896+
}
897+
883898
if (enable_dic) {
884899
sources += [
885900
"${chip_root}/third_party/silabs/mqtt/stack/mqtt.c",

0 commit comments

Comments
 (0)