Skip to content

Commit 436bfdf

Browse files
authored
Merge branch 'master' into fix-thread-support-rw
2 parents 9a31c1f + 0460715 commit 436bfdf

File tree

185 files changed

+15766
-2840
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

185 files changed

+15766
-2840
lines changed

.github/workflows/examples-efr32.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
if: github.actor != 'restyled-io[bot]'
4141

4242
container:
43-
image: ghcr.io/project-chip/chip-build-efr32:54
43+
image: ghcr.io/project-chip/chip-build-efr32:56
4444
volumes:
4545
- "/tmp/bloat_reports:/tmp/bloat_reports"
4646
steps:

.github/workflows/examples-linux-tv-casting-app.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
- name: Build Linux tv-casting-app
6262
run: |
6363
./scripts/run_in_build_env.sh \
64-
"scripts/examples/gn_build_example.sh examples/tv-casting-app/linux/ out/tv-casting-app"
64+
"scripts/examples/gn_build_example.sh examples/tv-casting-app/linux/ out/tv-casting-app chip_casting_simplified=true"
6565
6666
- name: Test casting from Linux tv-casting-app to Linux tv-app
6767
run: |

.github/workflows/release_artifacts.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
runs-on: ubuntu-latest
6565

6666
container:
67-
image: ghcr.io/project-chip/chip-build-efr32:54
67+
image: ghcr.io/project-chip/chip-build-efr32:56
6868
steps:
6969
- name: Checkout
7070
uses: actions/checkout@v4

.github/workflows/tests.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ jobs:
9191
--no-print \
9292
--log-level info \
9393
src/app/zap-templates/zcl/data-model/chip/global-attributes.xml \
94+
src/app/zap-templates/zcl/data-model/chip/global-structs.xml \
95+
src/app/zap-templates/zcl/data-model/chip/semantic-tag-namespace-enums.xml \
9496
src/app/zap-templates/zcl/data-model/chip/access-control-definitions.xml \
9597
src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml \
9698
src/app/zap-templates/zcl/data-model/chip/account-login-cluster.xml \

.gitmodules

+5-5
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,10 @@
231231
url = https://github.com/SiliconLabs/sdk_support.git
232232
branch = main
233233
platforms = silabs,silabs_docker
234-
[submodule "third_party/silabs/gecko_sdk"]
235-
path = third_party/silabs/gecko_sdk
236-
url = https://github.com/SiliconLabs/gecko_sdk.git
237-
branch = v4.4.2
234+
[submodule "third_party/silabs/simplicity_sdk"]
235+
path = third_party/silabs/simplicity_sdk
236+
url = https://github.com/SiliconLabs/simplicity_sdk.git
237+
branch = v2024.6.0
238238
platforms = silabs
239239
[submodule "third_party/silabs/wiseconnect-wifi-bt-sdk"]
240240
path = third_party/silabs/wiseconnect-wifi-bt-sdk
@@ -244,7 +244,7 @@
244244
[submodule "third_party/silabs/wifi_sdk"]
245245
path = third_party/silabs/wifi_sdk
246246
url = https://github.com/SiliconLabs/wiseconnect.git
247-
branch = v3.1.3-matter-hotfix.4
247+
branch = v3.3.0
248248
platforms = silabs
249249
[submodule "editline"]
250250
path = third_party/editline/repo

docs/zap_clusters.md

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ Generally regenerate using one of:
9090
| 257 | 0x101 | DoorLock |
9191
| 258 | 0x102 | WindowCovering |
9292
| 259 | 0x103 | BarrierControl |
93+
| 336 | 0x150 | ServiceArea |
9394
| 512 | 0x200 | PumpConfigurationAndControl |
9495
| 513 | 0x201 | Thermostat |
9596
| 514 | 0x202 | FanControl |

examples/chip-tool/commands/pairing/Commands.h

+9
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ class PairCodeThread : public PairingCommand
6969
{}
7070
};
7171

72+
class PairCodeWiFiThread : public PairingCommand
73+
{
74+
public:
75+
PairCodeWiFiThread(CredentialIssuerCommands * credsIssuerConfig) :
76+
PairingCommand("code-wifi-thread", PairingMode::Code, PairingNetworkType::WiFiOrThread, credsIssuerConfig)
77+
{}
78+
};
79+
7280
class PairOnNetwork : public PairingCommand
7381
{
7482
public:
@@ -231,6 +239,7 @@ void registerCommandsPairing(Commands & commands, CredentialIssuerCommands * cre
231239
make_unique<PairCodePase>(credsIssuerConfig),
232240
make_unique<PairCodeWifi>(credsIssuerConfig),
233241
make_unique<PairCodeThread>(credsIssuerConfig),
242+
make_unique<PairCodeWiFiThread>(credsIssuerConfig),
234243
make_unique<PairBleWiFi>(credsIssuerConfig),
235244
make_unique<PairBleThread>(credsIssuerConfig),
236245
make_unique<PairSoftAP>(credsIssuerConfig),

examples/chip-tool/commands/pairing/PairingCommand.cpp

+18-3
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ CommissioningParameters PairingCommand::GetCommissioningParameters()
111111
case PairingNetworkType::Thread:
112112
params.SetThreadOperationalDataset(mOperationalDataset);
113113
break;
114+
case PairingNetworkType::WiFiOrThread:
115+
params.SetWiFiCredentials(Controller::WiFiCredentials(mSSID, mPassword));
116+
params.SetThreadOperationalDataset(mOperationalDataset);
117+
break;
114118
case PairingNetworkType::None:
115119
break;
116120
}
@@ -212,7 +216,12 @@ CHIP_ERROR PairingCommand::PairWithCode(NodeId remoteId)
212216

213217
CHIP_ERROR PairingCommand::Pair(NodeId remoteId, PeerAddress address)
214218
{
215-
auto params = RendezvousParameters().SetSetupPINCode(mSetupPINCode).SetDiscriminator(mDiscriminator).SetPeerAddress(address);
219+
VerifyOrDieWithMsg(mSetupPINCode.has_value(), chipTool, "Using mSetupPINCode in a mode when we have not gotten one");
220+
auto params = RendezvousParameters().SetSetupPINCode(mSetupPINCode.value()).SetPeerAddress(address);
221+
if (mDiscriminator.has_value())
222+
{
223+
params.SetDiscriminator(mDiscriminator.value());
224+
}
216225

217226
CHIP_ERROR err = CHIP_NO_ERROR;
218227
if (mPaseOnly.ValueOr(false))
@@ -232,9 +241,11 @@ CHIP_ERROR PairingCommand::PairWithMdnsOrBleByIndex(NodeId remoteId, uint16_t in
232241
#if CHIP_DEVICE_LAYER_TARGET_DARWIN
233242
VerifyOrReturnError(IsInteractive(), CHIP_ERROR_INCORRECT_STATE);
234243

244+
VerifyOrDieWithMsg(mSetupPINCode.has_value(), chipTool, "Using mSetupPINCode in a mode when we have not gotten one");
245+
235246
RendezvousParameters params;
236247
ReturnErrorOnFailure(GetDeviceScanner().Get(index, params));
237-
params.SetSetupPINCode(mSetupPINCode);
248+
params.SetSetupPINCode(mSetupPINCode.value());
238249

239250
CHIP_ERROR err = CHIP_NO_ERROR;
240251
if (mPaseOnly.ValueOr(false))
@@ -254,6 +265,10 @@ CHIP_ERROR PairingCommand::PairWithMdnsOrBleByIndex(NodeId remoteId, uint16_t in
254265

255266
CHIP_ERROR PairingCommand::PairWithMdnsOrBleByIndexWithCode(NodeId remoteId, uint16_t index)
256267
{
268+
// We might or might not have a setup code. We don't know yet, but if we
269+
// do, we'll emplace it at that point.
270+
mSetupPINCode.reset();
271+
257272
#if CHIP_DEVICE_LAYER_TARGET_DARWIN
258273
VerifyOrReturnError(IsInteractive(), CHIP_ERROR_INCORRECT_STATE);
259274

@@ -277,7 +292,7 @@ CHIP_ERROR PairingCommand::PairWithMdnsOrBleByIndexWithCode(NodeId remoteId, uin
277292
VerifyOrReturnError(payload.isValidManualCode(), CHIP_ERROR_INVALID_ARGUMENT);
278293
}
279294

280-
mSetupPINCode = payload.setUpPINCode;
295+
mSetupPINCode.emplace(payload.setUpPINCode);
281296
return PairWithMdnsOrBleByIndex(remoteId, index);
282297
}
283298

examples/chip-tool/commands/pairing/PairingCommand.h

+23-9
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include <lib/support/Span.h>
2727
#include <lib/support/ThreadOperationalDataset.h>
2828

29+
#include <optional>
30+
2931
enum class PairingMode
3032
{
3133
None,
@@ -44,6 +46,7 @@ enum class PairingNetworkType
4446
None,
4547
WiFi,
4648
Thread,
49+
WiFiOrThread,
4750
};
4851

4952
class PairingCommand : public CHIPCommand,
@@ -85,6 +88,11 @@ class PairingCommand : public CHIPCommand,
8588
case PairingNetworkType::Thread:
8689
AddArgument("operationalDataset", &mOperationalDataset);
8790
break;
91+
case PairingNetworkType::WiFiOrThread:
92+
AddArgument("ssid", &mSSID);
93+
AddArgument("password", &mPassword);
94+
AddArgument("operationalDataset", &mOperationalDataset);
95+
break;
8896
}
8997

9098
switch (mode)
@@ -101,32 +109,32 @@ class PairingCommand : public CHIPCommand,
101109
break;
102110
case PairingMode::Ble:
103111
AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
104-
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
105-
AddArgument("discriminator", 0, 4096, &mDiscriminator);
112+
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace());
113+
AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace());
106114
break;
107115
case PairingMode::OnNetwork:
108116
AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
109-
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
117+
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace());
110118
AddArgument("pase-only", 0, 1, &mPaseOnly);
111119
break;
112120
case PairingMode::SoftAP:
113121
AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
114-
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
115-
AddArgument("discriminator", 0, 4096, &mDiscriminator);
122+
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace());
123+
AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace());
116124
AddArgument("device-remote-ip", &mRemoteAddr);
117125
AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
118126
AddArgument("pase-only", 0, 1, &mPaseOnly);
119127
break;
120128
case PairingMode::AlreadyDiscovered:
121129
AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
122-
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
130+
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace());
123131
AddArgument("device-remote-ip", &mRemoteAddr);
124132
AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
125133
AddArgument("pase-only", 0, 1, &mPaseOnly);
126134
break;
127135
case PairingMode::AlreadyDiscoveredByIndex:
128136
AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
129-
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
137+
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace());
130138
AddArgument("index", 0, UINT16_MAX, &mIndex);
131139
AddArgument("pase-only", 0, 1, &mPaseOnly);
132140
break;
@@ -246,8 +254,14 @@ class PairingCommand : public CHIPCommand,
246254
mComplex_DSTOffsets;
247255

248256
uint16_t mRemotePort;
249-
uint16_t mDiscriminator;
250-
uint32_t mSetupPINCode;
257+
// mDiscriminator is only used for some situations, but in those situations
258+
// it's mandatory. Track whether we're actually using it; the cases that do
259+
// will emplace this optional.
260+
std::optional<uint16_t> mDiscriminator;
261+
// mSetupPINCode is only used for some situations, but in those situations
262+
// it's mandatory. Track whether we're actually using it; the cases that do
263+
// will emplace this optional.
264+
std::optional<uint32_t> mSetupPINCode;
251265
uint16_t mIndex;
252266
chip::ByteSpan mOperationalDataset;
253267
chip::ByteSpan mSSID;

examples/light-switch-app/silabs/.gn

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ check_system_includes = true
2323
default_args = {
2424
target_cpu = "arm"
2525
target_os = "freertos"
26-
chip_openthread_ftd = true
26+
chip_openthread_ftd = false
2727

2828
import("//openthread.gni")
2929
}

examples/lighting-app/nxp/k32w/k32w0/.gn

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ default_args = {
2626

2727
import("//args.gni")
2828

29+
pw_build_PIP_CONSTRAINTS = [ "${chip_root}/scripts/setup/constraints.txt" ]
30+
pw_build_PIP_REQUIREMENTS =
31+
[ "${chip_root}/scripts/setup/requirements.build.txt" ]
32+
2933
# Import default platform configs
3034
import("${chip_root}/src/platform/nxp/k32w/k32w0/args.gni")
3135
}

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

0 commit comments

Comments
 (0)