Skip to content

Commit 1fde485

Browse files
Merge branch 'master' into silabs/ota_requestor
2 parents 333c1ca + 64ae4d8 commit 1fde485

25 files changed

+484
-432
lines changed

examples/chef/common/chef-rvc-mode-delegate.cpp

+38
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,21 @@ using ModeTagStructType = chip::app::Clusters::detail::Structs::ModeTagStruct::T
2929

3030
#ifdef MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
3131
#include <chef-rvc-mode-delegate.h>
32+
33+
#ifdef MATTER_DM_PLUGIN_RVC_OPERATIONAL_STATE_SERVER
34+
#include <chef-rvc-operational-state-delegate.h>
35+
#endif // MATTER_DM_PLUGIN_RVC_OPERATIONAL_STATE_SERVER
36+
3237
using namespace chip::app::Clusters::RvcRunMode;
3338

3439
static std::unique_ptr<RvcRunModeDelegate> gRvcRunModeDelegate;
3540
static std::unique_ptr<ModeBase::Instance> gRvcRunModeInstance;
3641

42+
chip::app::Clusters::ModeBase::Instance * getRvcRunModeInstance()
43+
{
44+
return gRvcRunModeInstance.get();
45+
}
46+
3747
CHIP_ERROR RvcRunModeDelegate::Init()
3848
{
3949
return CHIP_NO_ERROR;
@@ -51,7 +61,35 @@ void RvcRunModeDelegate::HandleChangeToMode(uint8_t NewMode, ModeBase::Commands:
5161
return;
5262
}
5363

64+
#ifdef MATTER_DM_PLUGIN_RVC_OPERATIONAL_STATE_SERVER
65+
OperationalState::GenericOperationalError err(to_underlying(OperationalState::ErrorStateEnum::kNoError));
66+
if (NewMode == RvcRunMode::ModeIdle)
67+
{
68+
if (currentMode != RvcRunMode::ModeIdle)
69+
{ // Stop existing cycle when going from cleaning/mapping to idle.
70+
ChipLogProgress(DeviceLayer, "Stopping RVC cycle: %d", currentMode);
71+
getRvcOperationalStateDelegate()->HandleStopStateCallback(err);
72+
}
73+
}
74+
else
75+
{
76+
if (currentMode == RvcRunMode::ModeIdle)
77+
{ // Start a new cycle when going from idle to clening/mapping.
78+
ChipLogProgress(DeviceLayer, "Starting new RVC cycle: %d", NewMode);
79+
getRvcOperationalStateDelegate()->HandleStartStateCallback(err);
80+
}
81+
}
82+
if (err.IsEqual(OperationalState::GenericOperationalError(to_underlying(OperationalState::ErrorStateEnum::kNoError))))
83+
{
84+
response.status = to_underlying(ModeBase::StatusCode::kSuccess);
85+
}
86+
else
87+
{
88+
response.status = to_underlying(ModeBase::StatusCode::kGenericFailure);
89+
}
90+
#else
5491
response.status = to_underlying(ModeBase::StatusCode::kSuccess);
92+
#endif // MATTER_DM_PLUGIN_RVC_OPERATIONAL_STATE_SERVER
5593
}
5694

5795
CHIP_ERROR RvcRunModeDelegate::GetModeLabelByIndex(uint8_t modeIndex, chip::MutableCharSpan & label)

examples/chef/common/chef-rvc-mode-delegate.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class RvcRunModeDelegate : public ModeBase::Delegate
4242
using ModeTagStructType = detail::Structs::ModeTagStruct::Type;
4343
ModeTagStructType ModeTagsIdle[1] = { { .value = to_underlying(ModeTag::kIdle) } };
4444
ModeTagStructType ModeTagsCleaning[1] = { { .value = to_underlying(ModeTag::kCleaning) } };
45+
ModeTagStructType ModeTagsMapping[1] = { { .value = to_underlying(ModeTag::kMapping) } };
4546

4647
const detail::Structs::ModeOptionStruct::Type kModeOptions[3] = {
4748
detail::Structs::ModeOptionStruct::Type{ .label = CharSpan::fromCharString("Idle"),
@@ -52,7 +53,7 @@ class RvcRunModeDelegate : public ModeBase::Delegate
5253
.modeTags = DataModel::List<const ModeTagStructType>(ModeTagsCleaning) },
5354
detail::Structs::ModeOptionStruct::Type{ .label = CharSpan::fromCharString("Mapping"),
5455
.mode = ModeMapping,
55-
.modeTags = DataModel::List<const ModeTagStructType>(ModeTagsIdle) },
56+
.modeTags = DataModel::List<const ModeTagStructType>(ModeTagsMapping) },
5657
};
5758

5859
CHIP_ERROR Init() override;
@@ -122,6 +123,8 @@ void Shutdown();
122123
} // namespace chip
123124

124125
#ifdef MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
126+
chip::app::Clusters::ModeBase::Instance * getRvcRunModeInstance();
127+
125128
chip::Protocols::InteractionModel::Status chefRvcRunModeWriteCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
126129
const EmberAfAttributeMetadata * attributeMetadata,
127130
uint8_t * buffer);

examples/chef/common/chef-rvc-operational-state-delegate.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,18 @@ using namespace chip::app::Clusters::OperationalState;
2828
using namespace chip::app::Clusters::RvcOperationalState;
2929
using chip::Protocols::InteractionModel::Status;
3030

31+
#ifdef MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
32+
#include <chef-rvc-mode-delegate.h>
33+
#endif // MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
34+
3135
static std::unique_ptr<RvcOperationalStateDelegate> gRvcOperationalStateDelegate;
3236
static std::unique_ptr<RvcOperationalState::Instance> gRvcOperationalStateInstance;
3337

38+
RvcOperationalStateDelegate * getRvcOperationalStateDelegate()
39+
{
40+
return gRvcOperationalStateDelegate.get();
41+
}
42+
3443
static void onOperationalStateTimerTick(System::Layer * systemLayer, void * data);
3544

3645
DataModel::Nullable<uint32_t> RvcOperationalStateDelegate::GetCountdownTime()
@@ -176,6 +185,11 @@ static void onOperationalStateTimerTick(System::Layer * systemLayer, void * data
176185
OperationalState::OperationalStateEnum state =
177186
static_cast<OperationalState::OperationalStateEnum>(instance->GetCurrentOperationalState());
178187

188+
if (state == OperationalState::OperationalStateEnum::kStopped) // Do not continue the timer when RVC has stopped.
189+
{
190+
return;
191+
}
192+
179193
if (gRvcOperationalStateDelegate->mCountdownTime.IsNull())
180194
{
181195
if (state == OperationalState::OperationalStateEnum::kRunning)
@@ -223,6 +237,10 @@ static void onOperationalStateTimerTick(System::Layer * systemLayer, void * data
223237
gRvcOperationalStateDelegate->mRunningTime = 0;
224238
gRvcOperationalStateDelegate->mPausedTime = 0;
225239
gRvcOperationalStateDelegate->mCountdownTime.SetNull();
240+
241+
#ifdef MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
242+
getRvcRunModeInstance()->UpdateCurrentMode(RvcRunMode::ModeIdle);
243+
#endif // MATTER_DM_PLUGIN_RVC_RUN_MODE_SERVER
226244
}
227245
}
228246
}

examples/chef/common/chef-rvc-operational-state-delegate.h

+2
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ void Shutdown();
122122
} // namespace app
123123
} // namespace chip
124124

125+
chip::app::Clusters::RvcOperationalState::RvcOperationalStateDelegate * getRvcOperationalStateDelegate();
126+
125127
chip::Protocols::InteractionModel::Status chefRvcOperationalStateWriteCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
126128
const EmberAfAttributeMetadata * attributeMetadata,
127129
uint8_t * buffer);

examples/network-manager-app/network-manager-common/network-manager-app.matter

+9-9
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,7 @@ cluster GroupKeyManagement = 63 {
14621462
}
14631463

14641464
/** Functionality to retrieve operational information about a managed Wi-Fi network. */
1465-
provisional cluster WiFiNetworkManagement = 1105 {
1465+
cluster WiFiNetworkManagement = 1105 {
14661466
revision 1;
14671467

14681468
readonly attribute nullable octet_string<32> ssid = 0;
@@ -1483,19 +1483,19 @@ provisional cluster WiFiNetworkManagement = 1105 {
14831483
}
14841484

14851485
/** Manage the Thread network of Thread Border Router */
1486-
provisional cluster ThreadBorderRouterManagement = 1106 {
1486+
cluster ThreadBorderRouterManagement = 1106 {
14871487
revision 1;
14881488

14891489
bitmap Feature : bitmap32 {
14901490
kPANChange = 0x1;
14911491
}
14921492

1493-
provisional readonly attribute char_string<63> borderRouterName = 0;
1494-
provisional readonly attribute octet_string<254> borderAgentID = 1;
1495-
provisional readonly attribute int16u threadVersion = 2;
1496-
provisional readonly attribute boolean interfaceEnabled = 3;
1497-
provisional readonly attribute nullable int64u activeDatasetTimestamp = 4;
1498-
provisional readonly attribute nullable int64u pendingDatasetTimestamp = 5;
1493+
readonly attribute char_string<63> borderRouterName = 0;
1494+
readonly attribute octet_string<254> borderAgentID = 1;
1495+
readonly attribute int16u threadVersion = 2;
1496+
readonly attribute boolean interfaceEnabled = 3;
1497+
readonly attribute nullable int64u activeDatasetTimestamp = 4;
1498+
readonly attribute nullable int64u pendingDatasetTimestamp = 5;
14991499
readonly attribute command_id generatedCommandList[] = 65528;
15001500
readonly attribute command_id acceptedCommandList[] = 65529;
15011501
readonly attribute event_id eventList[] = 65530;
@@ -1527,7 +1527,7 @@ provisional cluster ThreadBorderRouterManagement = 1106 {
15271527
}
15281528

15291529
/** Manages the names and credentials of Thread networks visible to the user. */
1530-
provisional cluster ThreadNetworkDirectory = 1107 {
1530+
cluster ThreadNetworkDirectory = 1107 {
15311531
revision 1;
15321532

15331533
struct ThreadNetworkStruct {

examples/placeholder/linux/apps/app1/config.matter

+7-7
Original file line numberDiff line numberDiff line change
@@ -6770,19 +6770,19 @@ cluster OccupancySensing = 1030 {
67706770
}
67716771

67726772
/** Manage the Thread network of Thread Border Router */
6773-
provisional cluster ThreadBorderRouterManagement = 1106 {
6773+
cluster ThreadBorderRouterManagement = 1106 {
67746774
revision 1;
67756775

67766776
bitmap Feature : bitmap32 {
67776777
kPANChange = 0x1;
67786778
}
67796779

6780-
provisional readonly attribute char_string<63> borderRouterName = 0;
6781-
provisional readonly attribute octet_string<254> borderAgentID = 1;
6782-
provisional readonly attribute int16u threadVersion = 2;
6783-
provisional readonly attribute boolean interfaceEnabled = 3;
6784-
provisional readonly attribute nullable int64u activeDatasetTimestamp = 4;
6785-
provisional readonly attribute nullable int64u pendingDatasetTimestamp = 5;
6780+
readonly attribute char_string<63> borderRouterName = 0;
6781+
readonly attribute octet_string<254> borderAgentID = 1;
6782+
readonly attribute int16u threadVersion = 2;
6783+
readonly attribute boolean interfaceEnabled = 3;
6784+
readonly attribute nullable int64u activeDatasetTimestamp = 4;
6785+
readonly attribute nullable int64u pendingDatasetTimestamp = 5;
67866786
readonly attribute command_id generatedCommandList[] = 65528;
67876787
readonly attribute command_id acceptedCommandList[] = 65529;
67886788
readonly attribute event_id eventList[] = 65530;

examples/thermostat/nxp/zap/thermostat_matter_br.matter

+7-7
Original file line numberDiff line numberDiff line change
@@ -2100,19 +2100,19 @@ cluster Thermostat = 513 {
21002100
}
21012101

21022102
/** Manage the Thread network of Thread Border Router */
2103-
provisional cluster ThreadBorderRouterManagement = 1106 {
2103+
cluster ThreadBorderRouterManagement = 1106 {
21042104
revision 1;
21052105

21062106
bitmap Feature : bitmap32 {
21072107
kPANChange = 0x1;
21082108
}
21092109

2110-
provisional readonly attribute char_string<63> borderRouterName = 0;
2111-
provisional readonly attribute octet_string<254> borderAgentID = 1;
2112-
provisional readonly attribute int16u threadVersion = 2;
2113-
provisional readonly attribute boolean interfaceEnabled = 3;
2114-
provisional readonly attribute nullable int64u activeDatasetTimestamp = 4;
2115-
provisional readonly attribute nullable int64u pendingDatasetTimestamp = 5;
2110+
readonly attribute char_string<63> borderRouterName = 0;
2111+
readonly attribute octet_string<254> borderAgentID = 1;
2112+
readonly attribute int16u threadVersion = 2;
2113+
readonly attribute boolean interfaceEnabled = 3;
2114+
readonly attribute nullable int64u activeDatasetTimestamp = 4;
2115+
readonly attribute nullable int64u pendingDatasetTimestamp = 5;
21162116
readonly attribute command_id generatedCommandList[] = 65528;
21172117
readonly attribute command_id acceptedCommandList[] = 65529;
21182118
readonly attribute event_id eventList[] = 65530;

examples/thread-br-app/thread-br-common/thread-br-app.matter

+7-7
Original file line numberDiff line numberDiff line change
@@ -1380,19 +1380,19 @@ cluster UserLabel = 65 {
13801380
}
13811381

13821382
/** Manage the Thread network of Thread Border Router */
1383-
provisional cluster ThreadBorderRouterManagement = 1106 {
1383+
cluster ThreadBorderRouterManagement = 1106 {
13841384
revision 1;
13851385

13861386
bitmap Feature : bitmap32 {
13871387
kPANChange = 0x1;
13881388
}
13891389

1390-
provisional readonly attribute char_string<63> borderRouterName = 0;
1391-
provisional readonly attribute octet_string<254> borderAgentID = 1;
1392-
provisional readonly attribute int16u threadVersion = 2;
1393-
provisional readonly attribute boolean interfaceEnabled = 3;
1394-
provisional readonly attribute nullable int64u activeDatasetTimestamp = 4;
1395-
provisional readonly attribute nullable int64u pendingDatasetTimestamp = 5;
1390+
readonly attribute char_string<63> borderRouterName = 0;
1391+
readonly attribute octet_string<254> borderAgentID = 1;
1392+
readonly attribute int16u threadVersion = 2;
1393+
readonly attribute boolean interfaceEnabled = 3;
1394+
readonly attribute nullable int64u activeDatasetTimestamp = 4;
1395+
readonly attribute nullable int64u pendingDatasetTimestamp = 5;
13961396
readonly attribute command_id generatedCommandList[] = 65528;
13971397
readonly attribute command_id acceptedCommandList[] = 65529;
13981398
readonly attribute event_id eventList[] = 65530;

src/app/zap-templates/zcl/data-model/chip/push-av-stream-transport-cluster.xml

+6-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ limitations under the License.
1818
XML generated by Alchemy; DO NOT EDIT.
1919
Source: src/app_clusters/PushAVStreamTransport.adoc
2020
Parameters: in-progress
21-
Git: 1.4-534-g3214b3502
21+
Git: 0.7-summer-2025-177-gd33ec772f
2222
-->
2323
<configurator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../zcl.xsd">
2424
<domain name="Cameras"/>
@@ -145,7 +145,7 @@ Git: 1.4-534-g3214b3502
145145
</struct>
146146

147147
<cluster>
148-
<domain name="Cameras"/>
148+
<domain name="Cameras">Cameras</domain>
149149
<name>Push AV Stream Transport</name>
150150
<code>0x0555</code>
151151
<define>PUSH_AV_STREAM_TRANSPORT_CLUSTER</define>
@@ -164,11 +164,13 @@ Git: 1.4-534-g3214b3502
164164
<command code="0x00" source="client" name="AllocatePushTransport" optional="false" response="AllocatePushTransportResponse">
165165
<description>This command SHALL allocate a transport and return a PushTransportConnectionID.</description>
166166
<access op="invoke" privilege="manage"/>
167+
<quality largeMessage="true"/>
167168
<arg id="0" name="TransportOptions" type="TransportOptionsStruct"/>
168169
</command>
169170

170171
<command code="0x01" source="server" name="AllocatePushTransportResponse" optional="false" disableDefaultResponse="true">
171172
<description>This command SHALL be generated in response to an AllocatePushTransport command.</description>
173+
<quality largeMessage="true"/>
172174
<arg id="0" name="ConnectionID" type="int16u"/>
173175
<arg id="1" name="TransportOptions" type="TransportOptionsStruct"/>
174176
<arg id="2" name="TransportStatus" type="TransportStatusEnum" min="0x00" max="0x01"/>
@@ -203,11 +205,13 @@ Git: 1.4-534-g3214b3502
203205

204206
<command code="0x06" source="client" name="FindTransport" optional="false" response="FindTransportResponse">
205207
<description>This command SHALL return the Stream Options Configuration for the specified push transport.</description>
208+
<quality largeMessage="true"/>
206209
<arg id="0" name="ConnectionID" type="int16u" optional="true" isNullable="true"/>
207210
</command>
208211

209212
<command code="0x07" source="server" name="FindTransportResponse" optional="false" disableDefaultResponse="true">
210213
<description>This command SHALL be generated in response to a FindTransport command.</description>
214+
<quality largeMessage="true"/>
211215
<arg id="0" name="StreamConfigurations" array="true" type="TransportConfigurationStruct"/>
212216
</command>
213217

src/app/zap-templates/zcl/data-model/chip/thread-border-router-management-cluster.xml

+12-12
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ limitations under the License.
2222
<field name="PANChange" mask="0x1"/>
2323
</bitmap>
2424

25-
<cluster apiMaturity="provisional">
25+
<cluster>
2626
<domain>Network Infrastructure</domain>
2727
<name>Thread Border Router Management</name>
2828
<code>0x0452</code>
@@ -33,57 +33,57 @@ limitations under the License.
3333

3434
<globalAttribute code="0xFFFD" side="either" value="1"/>
3535

36-
<attribute side="server" code="0x0000" name="BorderRouterName" apiMaturity="provisional" define="BORDER_ROUTER_NAME" type="char_string" length="63">
36+
<attribute side="server" code="0x0000" name="BorderRouterName" define="BORDER_ROUTER_NAME" type="char_string" length="63">
3737
<mandatoryConform/>
3838
</attribute>
3939

40-
<attribute side="server" code="0x0001" name="BorderAgentID" apiMaturity="provisional" define="BORDER_AGENT_ID" type="octet_string">
40+
<attribute side="server" code="0x0001" name="BorderAgentID" define="BORDER_AGENT_ID" type="octet_string">
4141
<mandatoryConform/>
4242
</attribute>
4343

44-
<attribute side="server" code="0x0002" name="ThreadVersion" apiMaturity="provisional" define="THREAD_VERSION" type="int16u">
44+
<attribute side="server" code="0x0002" name="ThreadVersion" define="THREAD_VERSION" type="int16u">
4545
<mandatoryConform/>
4646
</attribute>
4747

48-
<attribute side="server" code="0x0003" name="InterfaceEnabled" apiMaturity="provisional" define="INTERFACE_ENABLED" type="boolean" default="0">
48+
<attribute side="server" code="0x0003" name="InterfaceEnabled" define="INTERFACE_ENABLED" type="boolean" default="0">
4949
<mandatoryConform/>
5050
</attribute>
5151

52-
<attribute side="server" code="0x0004" name="ActiveDatasetTimestamp" apiMaturity="provisional" define="ACTIVE_DATASET_TIMESTAMP" type="int64u" isNullable="true">
52+
<attribute side="server" code="0x0004" name="ActiveDatasetTimestamp" define="ACTIVE_DATASET_TIMESTAMP" type="int64u" isNullable="true">
5353
<mandatoryConform/>
5454
</attribute>
5555

56-
<attribute side="server" code="0x0005" name="PendingDatasetTimestamp" apiMaturity="provisional" define="PENDING_DATASET_TIMESTAMP" type="int64u" isNullable="true">
56+
<attribute side="server" code="0x0005" name="PendingDatasetTimestamp" define="PENDING_DATASET_TIMESTAMP" type="int64u" isNullable="true">
5757
<mandatoryConform/>
5858
</attribute>
5959

60-
<command source="client" code="0x00" apiMaturity="provisional" name="GetActiveDatasetRequest" response="DatasetResponse" optional="false">
60+
<command source="client" code="0x00" name="GetActiveDatasetRequest" response="DatasetResponse" optional="false">
6161
<description>Command to request the active operational dataset of the Thread network to which the border router is connected. This command must be sent over a valid CASE session</description>
6262
<access op="invoke" privilege="manage"/>
6363
<mandatoryConform/>
6464
</command>
6565

66-
<command source="client" code="0x01" apiMaturity="provisional" name="GetPendingDatasetRequest" response="DatasetResponse" optional="false">
66+
<command source="client" code="0x01" name="GetPendingDatasetRequest" response="DatasetResponse" optional="false">
6767
<description>Command to request the pending dataset of the Thread network to which the border router is connected. This command must be sent over a valid CASE session</description>
6868
<access op="invoke" privilege="manage"/>
6969
<mandatoryConform/>
7070
</command>
7171

72-
<command source="server" code="0x02" apiMaturity="provisional" name="DatasetResponse" optional="false">
72+
<command source="server" code="0x02" name="DatasetResponse" optional="false">
7373
<description>Generated response to GetActiveDatasetRequest or GetPendingDatasetRequest commands.</description>
7474
<arg name="Dataset" type="octet_string" length="254"/>
7575
<mandatoryConform/>
7676
</command>
7777

78-
<command source="client" code="0x03" apiMaturity="provisional" name="SetActiveDatasetRequest" optional="false">
78+
<command source="client" code="0x03" name="SetActiveDatasetRequest" optional="false">
7979
<description>Command to set or update the active Dataset of the Thread network to which the Border Router is connected.</description>
8080
<arg name="ActiveDataset" type="octet_string" length="254"/>
8181
<arg name="Breadcrumb" type="int64u" optional="true"/>
8282
<access op="invoke" privilege="manage"/>
8383
<mandatoryConform/>
8484
</command>
8585

86-
<command source="client" code="0x04" apiMaturity="provisional" name="SetPendingDatasetRequest" optional="true">
86+
<command source="client" code="0x04" name="SetPendingDatasetRequest" optional="true">
8787
<description>Command set or update the pending Dataset of the Thread network to which the Border Router is connected.</description>
8888
<arg name="PendingDataset" type="octet_string" length="254"/>
8989
<access op="invoke" privilege="manage"/>

0 commit comments

Comments
 (0)