Skip to content

Commit d3f3c85

Browse files
[SL-ONLY] Cherry-pick all sl only from release_2.5.{0.1} (#279)
2 parents 627111d + 2618f3a commit d3f3c85

31 files changed

+1573
-314
lines changed

.github/silabs-builds-mg26.json

+6
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@
44
"boards": ["BRD4116A", "BRD4117A", "BRD4118A", "BRD2608A"],
55
"arguments": ["--docker"]
66
}
7+
],
8+
"lighting-app":[
9+
{
10+
"boards": ["BRD2608A"],
11+
"arguments": ["--docker", "chip_build_libshell=true", "matter_enable_tracing_support=true", "--clean"]
12+
}
713
]
814
}

LICENSE

+29-191
Original file line numberDiff line numberDiff line change
@@ -1,201 +1,39 @@
1-
Apache License
2-
Version 2.0, January 2004
3-
http://www.apache.org/licenses/
1+
# Silabs Matter SDK Licensing terms
42

5-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
3+
Source code in this SDK is licensed to you under the terms of a default license
4+
from Silicon Laboratories Inc. This default license and exceptions to this
5+
default licensing are set forth below.
66

7-
1. Definitions.
7+
The default license is the Master Software License Agreement (MSLA)
8+
(https://www.silabs.com/about-us/legal/master-software-license-agreement), which
9+
applies unless otherwise noted.
810

9-
"License" shall mean the terms and conditions for use, reproduction,
10-
and distribution as defined by Sections 1 through 9 of this document.
11+
Some files use different licensing terms. If so, they will be clearly marked in
12+
the beginning of the file.
1113

12-
"Licensor" shall mean the copyright owner or entity authorized by
13-
the copyright owner that is granting the License.
14+
Library files (either in archived or object form) are distributed under the
15+
terms of the MSLA.
1416

15-
"Legal Entity" shall mean the union of the acting entity and all
16-
other entities that control, are controlled by, or are under common
17-
control with that entity. For the purposes of this definition,
18-
"control" means (i) the power, direct or indirect, to cause the
19-
direction or management of such entity, whether by contract or
20-
otherwise, or (ii) ownership of fifty percent (50%) or more of the
21-
outstanding shares, or (iii) beneficial ownership of such entity.
17+
Some code from third parties have been included in this SDK under a separate
18+
license. An example can be found in the subdirectory "third_party". However,
19+
licensed third-party code is not limited to this directory.
2220

23-
"You" (or "Your") shall mean an individual or Legal Entity
24-
exercising permissions granted by this License.
21+
## Zlib license
2522

26-
"Source" form shall mean the preferred form for making modifications,
27-
including but not limited to software source code, documentation
28-
source, and configuration files.
23+
The licensor of this software is Silicon Laboratories Inc.
2924

30-
"Object" form shall mean any form resulting from mechanical
31-
transformation or translation of a Source form, including but
32-
not limited to compiled object code, generated documentation,
33-
and conversions to other media types.
25+
This software is provided 'as-is', without any express or implied warranty. In
26+
no event will the authors be held liable for any damages arising from the use of
27+
this software.
3428

35-
"Work" shall mean the work of authorship, whether in Source or
36-
Object form, made available under the License, as indicated by a
37-
copyright notice that is included in or attached to the work
38-
(an example is provided in the Appendix below).
29+
Permission is granted to anyone to use this software for any purpose, including
30+
commercial applications, and to alter it and redistribute it freely, subject to
31+
the following restrictions:
3932

40-
"Derivative Works" shall mean any work, whether in Source or Object
41-
form, that is based on (or derived from) the Work and for which the
42-
editorial revisions, annotations, elaborations, or other modifications
43-
represent, as a whole, an original work of authorship. For the purposes
44-
of this License, Derivative Works shall not include works that remain
45-
separable from, or merely link (or bind by name) to the interfaces of,
46-
the Work and Derivative Works thereof.
47-
48-
"Contribution" shall mean any work of authorship, including
49-
the original version of the Work and any modifications or additions
50-
to that Work or Derivative Works thereof, that is intentionally
51-
submitted to Licensor for inclusion in the Work by the copyright owner
52-
or by an individual or Legal Entity authorized to submit on behalf of
53-
the copyright owner. For the purposes of this definition, "submitted"
54-
means any form of electronic, verbal, or written communication sent
55-
to the Licensor or its representatives, including but not limited to
56-
communication on electronic mailing lists, source code control systems,
57-
and issue tracking systems that are managed by, or on behalf of, the
58-
Licensor for the purpose of discussing and improving the Work, but
59-
excluding communication that is conspicuously marked or otherwise
60-
designated in writing by the copyright owner as "Not a Contribution."
61-
62-
"Contributor" shall mean Licensor and any individual or Legal Entity
63-
on behalf of whom a Contribution has been received by Licensor and
64-
subsequently incorporated within the Work.
65-
66-
2. Grant of Copyright License. Subject to the terms and conditions of
67-
this License, each Contributor hereby grants to You a perpetual,
68-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69-
copyright license to reproduce, prepare Derivative Works of,
70-
publicly display, publicly perform, sublicense, and distribute the
71-
Work and such Derivative Works in Source or Object form.
72-
73-
3. Grant of Patent License. Subject to the terms and conditions of
74-
this License, each Contributor hereby grants to You a perpetual,
75-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76-
(except as stated in this section) patent license to make, have made,
77-
use, offer to sell, sell, import, and otherwise transfer the Work,
78-
where such license applies only to those patent claims licensable
79-
by such Contributor that are necessarily infringed by their
80-
Contribution(s) alone or by combination of their Contribution(s)
81-
with the Work to which such Contribution(s) was submitted. If You
82-
institute patent litigation against any entity (including a
83-
cross-claim or counterclaim in a lawsuit) alleging that the Work
84-
or a Contribution incorporated within the Work constitutes direct
85-
or contributory patent infringement, then any patent licenses
86-
granted to You under this License for that Work shall terminate
87-
as of the date such litigation is filed.
88-
89-
4. Redistribution. You may reproduce and distribute copies of the
90-
Work or Derivative Works thereof in any medium, with or without
91-
modifications, and in Source or Object form, provided that You
92-
meet the following conditions:
93-
94-
(a) You must give any other recipients of the Work or
95-
Derivative Works a copy of this License; and
96-
97-
(b) You must cause any modified files to carry prominent notices
98-
stating that You changed the files; and
99-
100-
(c) You must retain, in the Source form of any Derivative Works
101-
that You distribute, all copyright, patent, trademark, and
102-
attribution notices from the Source form of the Work,
103-
excluding those notices that do not pertain to any part of
104-
the Derivative Works; and
105-
106-
(d) If the Work includes a "NOTICE" text file as part of its
107-
distribution, then any Derivative Works that You distribute must
108-
include a readable copy of the attribution notices contained
109-
within such NOTICE file, excluding those notices that do not
110-
pertain to any part of the Derivative Works, in at least one
111-
of the following places: within a NOTICE text file distributed
112-
as part of the Derivative Works; within the Source form or
113-
documentation, if provided along with the Derivative Works; or,
114-
within a display generated by the Derivative Works, if and
115-
wherever such third-party notices normally appear. The contents
116-
of the NOTICE file are for informational purposes only and
117-
do not modify the License. You may add Your own attribution
118-
notices within Derivative Works that You distribute, alongside
119-
or as an addendum to the NOTICE text from the Work, provided
120-
that such additional attribution notices cannot be construed
121-
as modifying the License.
122-
123-
You may add Your own copyright statement to Your modifications and
124-
may provide additional or different license terms and conditions
125-
for use, reproduction, or distribution of Your modifications, or
126-
for any such Derivative Works as a whole, provided Your use,
127-
reproduction, and distribution of the Work otherwise complies with
128-
the conditions stated in this License.
129-
130-
5. Submission of Contributions. Unless You explicitly state otherwise,
131-
any Contribution intentionally submitted for inclusion in the Work
132-
by You to the Licensor shall be under the terms and conditions of
133-
this License, without any additional terms or conditions.
134-
Notwithstanding the above, nothing herein shall supersede or modify
135-
the terms of any separate license agreement you may have executed
136-
with Licensor regarding such Contributions.
137-
138-
6. Trademarks. This License does not grant permission to use the trade
139-
names, trademarks, service marks, or product names of the Licensor,
140-
except as required for reasonable and customary use in describing the
141-
origin of the Work and reproducing the content of the NOTICE file.
142-
143-
7. Disclaimer of Warranty. Unless required by applicable law or
144-
agreed to in writing, Licensor provides the Work (and each
145-
Contributor provides its Contributions) on an "AS IS" BASIS,
146-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147-
implied, including, without limitation, any warranties or conditions
148-
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149-
PARTICULAR PURPOSE. You are solely responsible for determining the
150-
appropriateness of using or redistributing the Work and assume any
151-
risks associated with Your exercise of permissions under this License.
152-
153-
8. Limitation of Liability. In no event and under no legal theory,
154-
whether in tort (including negligence), contract, or otherwise,
155-
unless required by applicable law (such as deliberate and grossly
156-
negligent acts) or agreed to in writing, shall any Contributor be
157-
liable to You for damages, including any direct, indirect, special,
158-
incidental, or consequential damages of any character arising as a
159-
result of this License or out of the use or inability to use the
160-
Work (including but not limited to damages for loss of goodwill,
161-
work stoppage, computer failure or malfunction, or any and all
162-
other commercial damages or losses), even if such Contributor
163-
has been advised of the possibility of such damages.
164-
165-
9. Accepting Warranty or Additional Liability. While redistributing
166-
the Work or Derivative Works thereof, You may choose to offer,
167-
and charge a fee for, acceptance of support, warranty, indemnity,
168-
or other liability obligations and/or rights consistent with this
169-
License. However, in accepting such obligations, You may act only
170-
on Your own behalf and on Your sole responsibility, not on behalf
171-
of any other Contributor, and only if You agree to indemnify,
172-
defend, and hold each Contributor harmless for any liability
173-
incurred by, or claims asserted against, such Contributor by reason
174-
of your accepting any such warranty or additional liability.
175-
176-
END OF TERMS AND CONDITIONS
177-
178-
APPENDIX: How to apply the Apache License to your work.
179-
180-
To apply the Apache License to your work, attach the following
181-
boilerplate notice, with the fields enclosed by brackets "[]"
182-
replaced with your own identifying information. (Don't include
183-
the brackets!) The text should be enclosed in the appropriate
184-
comment syntax for the file format. We also recommend that a
185-
file or class name and description of purpose be included on the
186-
same "printed page" as the copyright notice for easier
187-
identification within third-party archives.
188-
189-
Copyright [yyyy] [name of copyright owner]
190-
191-
Licensed under the Apache License, Version 2.0 (the "License");
192-
you may not use this file except in compliance with the License.
193-
You may obtain a copy of the License at
194-
195-
http://www.apache.org/licenses/LICENSE-2.0
196-
197-
Unless required by applicable law or agreed to in writing, software
198-
distributed under the License is distributed on an "AS IS" BASIS,
199-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200-
See the License for the specific language governing permissions and
201-
limitations under the License.
33+
1. The origin of this software must not be misrepresented; you must not claim
34+
that you wrote the original software. If you use this software in a product,
35+
an acknowledgment in the product documentation would be appreciated but is
36+
not required.
37+
2. Altered source versions must be plainly marked as such, and must not be
38+
misrepresented as being the original software.
39+
3. This notice may not be removed or altered from any source distribution.

examples/lighting-app/silabs/src/AppTask.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737

3838
#include <lib/support/CodeUtils.h>
3939

40+
#include <lib/support/Span.h>
4041
#include <platform/CHIPDeviceLayer.h>
42+
#include <platform/silabs/tracing/SilabsTracingMacros.h>
4143

4244
#ifdef SL_CATALOG_SIMPLE_LED_LED1_PRESENT
4345
#define LIGHT_LED 1
@@ -66,7 +68,9 @@ CHIP_ERROR AppTask::Init()
6668
{
6769
CHIP_ERROR err = CHIP_NO_ERROR;
6870
chip::DeviceLayer::Silabs::GetPlatform().SetButtonsCb(AppTask::ButtonEventHandler);
69-
71+
char rebootLightOnKey[] = "Reboot->LightOn";
72+
CharSpan rebootLighOnSpan(rebootLightOnKey);
73+
SILABS_TRACE_REGISTER(rebootLighOnSpan);
7074
#ifdef DISPLAY_ENABLED
7175
GetLCD().Init((uint8_t *) "Lighting-App");
7276
#endif
@@ -89,6 +93,7 @@ CHIP_ERROR AppTask::Init()
8993

9094
sLightLED.Init(LIGHT_LED);
9195
sLightLED.Set(LightMgr().IsLightOn());
96+
SILABS_TRACE_INSTANT(rebootLighOnSpan);
9297

9398
// Update the LCD with the Stored value. Show QR Code if not provisioned
9499
#ifdef DISPLAY_ENABLED
@@ -105,6 +110,7 @@ CHIP_ERROR AppTask::Init()
105110
#endif // QR_CODE_ENABLED
106111
#endif
107112

113+
BaseApplication::InitCompleteCallback(err);
108114
return err;
109115
}
110116

examples/platform/silabs/BaseApplication.cpp

+34-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,17 @@
8989
#include "sl_cmp_config.h"
9090
#endif
9191

92+
// Tracing
93+
#include <platform/silabs/tracing/SilabsTracingMacros.h>
94+
#if MATTER_TRACING_ENABLED && defined(ENABLE_CHIP_SHELL)
95+
#include <TracingShellCommands.h>
96+
#endif // MATTER_TRACING_ENABLED
97+
98+
// sl-only
99+
#if SL_MATTER_ENABLE_APP_SLEEP_MANAGER
100+
#include <ApplicationSleepManager.h>
101+
#endif // SL_MATTER_ENABLE_APP_SLEEP_MANAGER
102+
92103
/**********************************************************
93104
* Defines and Constants
94105
*********************************************************/
@@ -113,6 +124,7 @@ using namespace chip::app;
113124
using namespace ::chip::DeviceLayer;
114125
using namespace ::chip::DeviceLayer::Silabs;
115126

127+
using TimeTraceOperation = chip::Tracing::Silabs::TimeTraceOperation;
116128
namespace {
117129

118130
/**********************************************************
@@ -210,8 +222,19 @@ void BaseApplicationDelegate::OnCommissioningSessionEstablishmentError(CHIP_ERRO
210222
#endif // SL_WIFI && CHIP_CONFIG_ENABLE_ICD_SERVER
211223
}
212224

225+
void BaseApplicationDelegate::OnCommissioningWindowOpened()
226+
{
227+
#if SL_MATTER_ENABLE_APP_SLEEP_MANAGER
228+
app::Silabs::ApplicationSleepManager::GetInstance().OnCommissioningWindowOpened();
229+
#endif // SL_MATTER_ENABLE_APP_SLEEP_MANAGER
230+
}
231+
213232
void BaseApplicationDelegate::OnCommissioningWindowClosed()
214233
{
234+
#if SL_MATTER_ENABLE_APP_SLEEP_MANAGER
235+
app::Silabs::ApplicationSleepManager::GetInstance().OnCommissioningWindowClosed();
236+
#endif // SL_MATTER_ENABLE_APP_SLEEP_MANAGER
237+
215238
if (BaseApplication::GetProvisionStatus())
216239
{
217240
// After the device is provisioned and the commissioning passed
@@ -331,6 +354,9 @@ CHIP_ERROR BaseApplication::Init()
331354
#if CHIP_CONFIG_ENABLE_ICD_SERVER
332355
ICDCommands::RegisterCommands();
333356
#endif // CHIP_CONFIG_ENABLE_ICD_SERVER
357+
#if MATTER_TRACING_ENABLED
358+
TracingCommands::RegisterCommands();
359+
#endif // MATTER_TRACING_ENABLED
334360
#endif // ENABLE_CHIP_SHELL
335361

336362
#ifdef PERFORMANCE_TEST_ENABLED
@@ -349,6 +375,12 @@ CHIP_ERROR BaseApplication::Init()
349375
return err;
350376
}
351377

378+
void BaseApplication::InitCompleteCallback(CHIP_ERROR err)
379+
{
380+
SILABS_TRACE_END(TimeTraceOperation::kAppInit);
381+
SILABS_TRACE_END(TimeTraceOperation::kBootup);
382+
}
383+
352384
void BaseApplication::FunctionTimerEventHandler(void * timerCbArg)
353385
{
354386
AppEvent event;
@@ -929,11 +961,12 @@ void BaseApplication::OnPlatformEvent(const ChipDeviceEvent * event, intptr_t)
929961

930962
// SL-Only
931963
#ifdef SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT
932-
#if defined(SL_MATTER_ZIGBEE_CMP)
964+
#if defined(SL_MATTER_ZIGBEE_CMP) && !defined(SL_CATALOG_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_PRESENT)
933965
uint8_t channel = otLinkGetChannel(DeviceLayer::ThreadStackMgrImpl().OTInstance());
934966
Zigbee::RequestStart(channel); // leave handle internally
935967
#elif defined(SL_MATTER_ZIGBEE_SEQUENTIAL) // Matter Zigbee sequential
936968
Zigbee::RequestLeave();
969+
Zigbee::ZLLNotFactoryNew();
937970
#endif // SL_MATTER_ZIGBEE_CMP
938971
#endif // SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT
939972
}

examples/platform/silabs/BaseApplication.h

+10
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class BaseApplicationDelegate : public AppDelegate, public chip::FabricTable::De
7575
void OnCommissioningSessionStopped() override;
7676
void OnCommissioningSessionEstablishmentError(CHIP_ERROR err) override;
7777
void OnCommissioningWindowClosed() override;
78+
void OnCommissioningWindowOpened() override;
7879

7980
// FabricTable::Delegate
8081
void OnFabricCommitted(const chip::FabricTable & fabricTable, chip::FabricIndex fabricIndex) override;
@@ -123,6 +124,7 @@ class BaseApplication
123124
*
124125
* @param event AppEvent to post
125126
*/
127+
126128
static void PostEvent(const AppEvent * event);
127129

128130
/**
@@ -177,6 +179,14 @@ class BaseApplication
177179
protected:
178180
CHIP_ERROR Init();
179181

182+
/** @brief
183+
* Function to be called at the end of Init to indicate that the application has completed its initialization.
184+
* Currently only used for tracing, might want to move logging here as well in the future
185+
* @param err CHIP_NO_ERROR on success, corresponding error code on Init failure, note that Init failure leads to an app error
186+
* so this is purely to have a trace logged with the error code
187+
*/
188+
void InitCompleteCallback(CHIP_ERROR err);
189+
180190
/**
181191
* @brief Function called to start the function timer
182192
*

0 commit comments

Comments
 (0)