Skip to content

Commit 2057bd0

Browse files
jmartinez-silabsrestyled-commits
authored andcommitted
[Silabs] Add support for factory and commissionable data provisioning with the use… (project-chip#34087)
* Add support factory and commissionable data provisioning with the use of librairies * Restyled by clang-format * remove files that are now used * fix for wifi ncp build * address comments * fixup include path --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 77957b4 commit 2057bd0

30 files changed

+2523
-866
lines changed

examples/platform/silabs/BaseApplication.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,21 @@
2424
#include "AppConfig.h"
2525
#include "AppEvent.h"
2626
#include "AppTask.h"
27-
2827
#include <app/server/Server.h>
2928

29+
#define APP_ACTION_BUTTON 1
30+
3031
#ifdef DISPLAY_ENABLED
3132
#include "lcd.h"
3233
#ifdef QR_CODE_ENABLED
3334
#include "qrcodegen.h"
3435
#endif // QR_CODE_ENABLED
3536
#endif // DISPLAY_ENABLED
3637

37-
#include "SilabsDeviceDataProvider.h"
3838
#if CHIP_CONFIG_ENABLE_ICD_SERVER == 1
3939
#include <app/icd/server/ICDNotifier.h> // nogncheck
4040
#endif
41+
#include <ProvisionManager.h>
4142
#include <app/server/OnboardingCodesUtil.h>
4243
#include <app/util/attribute-storage.h>
4344
#include <assert.h>
@@ -744,6 +745,11 @@ void BaseApplication::DispatchEvent(AppEvent * aEvent)
744745
void BaseApplication::ScheduleFactoryReset()
745746
{
746747
PlatformMgr().ScheduleWork([](intptr_t) {
748+
// Press both buttons to request provisioning
749+
if (GetPlatform().GetButtonState(APP_ACTION_BUTTON))
750+
{
751+
Provision::Manager::GetInstance().SetProvisionRequired(true);
752+
}
747753
PlatformMgr().HandleServerShuttingDown();
748754
ConfigurationMgr().InitiateFactoryReset();
749755
});
@@ -765,7 +771,8 @@ void BaseApplication::OutputQrCode(bool refreshLCD)
765771
char setupPayloadBuffer[chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1];
766772
chip::MutableCharSpan setupPayload(setupPayloadBuffer);
767773

768-
if (Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider().GetSetupPayload(setupPayload) == CHIP_NO_ERROR)
774+
CHIP_ERROR err = Provision::Manager::GetInstance().GetStorage().GetSetupPayload(setupPayload);
775+
if (CHIP_NO_ERROR == err)
769776
{
770777
// Print setup info on LCD if available
771778
#ifdef QR_CODE_ENABLED

examples/platform/silabs/MatterConfig.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
static chip::DeviceLayer::Internal::Efr32PsaOperationalKeystore gOperationalKeystore;
5757
#endif
5858

59-
#include "SilabsDeviceDataProvider.h"
59+
#include <ProvisionManager.h>
6060
#include <app/InteractionModelEngine.h>
6161
#include <app/TimerDelegates.h>
6262

@@ -80,8 +80,6 @@ static chip::DeviceLayer::Internal::Efr32PsaOperationalKeystore gOperationalKeys
8080

8181
#include <DeviceInfoProviderImpl.h>
8282
#include <app/server/Server.h>
83-
#include <credentials/DeviceAttestationCredsProvider.h>
84-
#include <examples/platform/silabs/SilabsDeviceAttestationCreds.h>
8583

8684
#include <platform/silabs/platformAbstraction/SilabsPlatform.h>
8785

@@ -92,7 +90,7 @@ static chip::DeviceLayer::Internal::Efr32PsaOperationalKeystore gOperationalKeys
9290
using namespace ::chip;
9391
using namespace ::chip::Inet;
9492
using namespace ::chip::DeviceLayer;
95-
using namespace ::chip::Credentials::Silabs;
93+
using namespace ::chip::Credentials;
9694
using namespace chip::DeviceLayer::Silabs;
9795

9896
#if CHIP_ENABLE_OPENTHREAD
@@ -174,7 +172,7 @@ void ApplicationStart(void * unused)
174172

175173
chip::DeviceLayer::PlatformMgr().LockChipStack();
176174
// Initialize device attestation config
177-
SetDeviceAttestationCredentialsProvider(Credentials::Silabs::GetSilabsDacProvider());
175+
SetDeviceAttestationCredentialsProvider(&Provision::Manager::GetInstance().GetStorage());
178176
chip::DeviceLayer::PlatformMgr().UnlockChipStack();
179177

180178
SILABS_LOG("Starting App Task");
@@ -190,7 +188,6 @@ void ApplicationStart(void * unused)
190188
void SilabsMatterConfig::AppInit()
191189
{
192190
GetPlatform().Init();
193-
194191
sMainTaskHandle = osThreadNew(ApplicationStart, nullptr, &kMainTaskAttr);
195192
SILABS_LOG("Starting scheduler");
196193
VerifyOrDie(sMainTaskHandle); // We can't proceed if the Main Task creation failed.
@@ -257,8 +254,11 @@ CHIP_ERROR SilabsMatterConfig::InitMatter(const char * appName)
257254

258255
ReturnErrorOnFailure(PlatformMgr().InitChipStack());
259256

260-
SetDeviceInstanceInfoProvider(&Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider());
261-
SetCommissionableDataProvider(&Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider());
257+
// Provision Manager
258+
Silabs::Provision::Manager & provision = Silabs::Provision::Manager::GetInstance();
259+
ReturnErrorOnFailure(provision.Init());
260+
SetDeviceInstanceInfoProvider(&provision.GetStorage());
261+
SetCommissionableDataProvider(&provision.GetStorage());
262262

263263
chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName(appName);
264264

examples/platform/silabs/SiWx917/BUILD.gn

+5-49
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,9 @@ source_set("test-event-trigger") {
8686
"${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.h",
8787
]
8888

89+
deps = [ "${chip_root}/src/platform/silabs/provision:provision-headers" ]
8990
public_configs = [ ":test-event-trigger-config" ]
90-
9191
public_deps = [
92-
":silabs-factory-data-provider",
9392
"${chip_root}/src/app:test-event-trigger",
9493
"${chip_root}/src/lib/core",
9594
"${chip_root}/src/lib/support",
@@ -114,46 +113,9 @@ source_set("siwx917-matter-shell") {
114113
}
115114
}
116115

117-
config("attestation-credentials-config") {
118-
include_dirs = [ "${chip_root}" ]
119-
}
120-
121-
source_set("siwx917-attestation-credentials") {
122-
sources = [
123-
"${silabs_common_plat_dir}/SilabsDeviceAttestationCreds.cpp",
124-
"${silabs_common_plat_dir}/SilabsDeviceAttestationCreds.h",
125-
]
126-
127-
public_deps = [
128-
"${chip_root}/src/credentials",
129-
"${chip_root}/src/platform:platform_base",
130-
]
131-
132-
public_configs = [ ":attestation-credentials-config" ]
133-
}
134-
135-
source_set("silabs-factory-data-provider") {
136-
sources = [
137-
"${silabs_common_plat_dir}/SilabsDeviceDataProvider.cpp",
138-
"${silabs_common_plat_dir}/SilabsDeviceDataProvider.h",
139-
]
140-
141-
public_deps = [
142-
"${chip_root}/src/credentials",
143-
"${chip_root}/src/lib/support",
144-
"${chip_root}/src/platform:platform_base",
145-
"${chip_root}/src/setup_payload",
146-
]
147-
148-
public_configs = [ ":siwx917-common-config" ]
149-
150-
if (sl_enable_test_event_trigger) {
151-
public_configs += [ ":test-event-trigger-config" ]
152-
}
153-
}
154-
155116
config("siwx917-common-config") {
156117
defines = [ "OTA_PERIODIC_TIMEOUT=${ota_periodic_query_timeout_sec}" ]
118+
libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ]
157119

158120
if (!disable_lcd) {
159121
include_dirs = [ "${silabs_common_plat_dir}/display" ]
@@ -210,7 +172,7 @@ config("silabs-wifi-config") {
210172
}
211173

212174
source_set("siwx917-common") {
213-
deps = []
175+
deps = [ "${chip_root}/src/platform/silabs/provision:provision-headers" ]
214176
defines = []
215177
public_deps = []
216178
public_configs = [
@@ -229,6 +191,8 @@ source_set("siwx917-common") {
229191
"${silabs_common_plat_dir}/LEDWidget.cpp",
230192
"${silabs_common_plat_dir}/MatterConfig.cpp",
231193
"${silabs_common_plat_dir}/SoftwareFaultReports.cpp",
194+
"${silabs_common_plat_dir}/provision/ProvisionStorageCustom.cpp",
195+
"${silabs_common_plat_dir}/provision/ProvisionStorageFlash.cpp",
232196
"${silabs_common_plat_dir}/silabs_utils.cpp",
233197
"${silabs_common_plat_dir}/syscalls_stubs.cpp",
234198
"${silabs_plat_si91x_wifi_dir}/dhcp_client.cpp",
@@ -282,14 +246,6 @@ source_set("siwx917-common") {
282246
]
283247
}
284248

285-
# Attestation Credentials
286-
deps += [ ":siwx917-attestation-credentials" ]
287-
288-
# Factory Data Provider
289-
if (use_efr32_factory_data_provider) {
290-
public_deps += [ ":silabs-factory-data-provider" ]
291-
}
292-
293249
public_deps += [
294250
"${chip_root}/examples/providers:device_info_provider",
295251
"${chip_root}/src/lib",

examples/platform/silabs/SilabsDeviceAttestationCreds.cpp

-199
This file was deleted.

0 commit comments

Comments
 (0)