Fixes the Service Area server's `SkipArea` handling (#35019)
* Updated the rvc-example PICS XML files.
* update the handling of the SkipArea command to match the latest spec.
* Updated the name of SkipCurrentArea to SkipArea in the Instance and Delegate classes.
* Refactored SkipCurrentArea names to SkipArea in the RVC example app.
* Restyled by clang-format
---------
Co-authored-by: Restyled.io <commits@restyled.io>
diff --git a/examples/rvc-app/rvc-common/include/rvc-device.h b/examples/rvc-app/rvc-common/include/rvc-device.h
index b66ce32..e2011f6 100644
--- a/examples/rvc-app/rvc-common/include/rvc-device.h
+++ b/examples/rvc-app/rvc-common/include/rvc-device.h
@@ -61,7 +61,7 @@
mOperationalStateDelegate.SetGoHomeCallback(&RvcDevice::HandleOpStateGoHomeCallback, this);
mServiceAreaDelegate.SetIsSetSelectedAreasAllowedCallback(&RvcDevice::SaIsSetSelectedAreasAllowed, this);
- mServiceAreaDelegate.SetHandleSkipCurrentAreaCallback(&RvcDevice::SaHandleSkipCurrentArea, this);
+ mServiceAreaDelegate.SetHandleSkipAreaCallback(&RvcDevice::SaHandleSkipArea, this);
mServiceAreaDelegate.SetIsSupportedAreasChangeAllowedCallback(&RvcDevice::SaIsSupportedAreasChangeAllowed, this);
mServiceAreaDelegate.SetIsSupportedMapChangeAllowedCallback(&RvcDevice::SaIsSupportedMapChangeAllowed, this);
}
@@ -104,7 +104,7 @@
bool SaIsSetSelectedAreasAllowed(MutableCharSpan & statusText);
- bool SaHandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText);
+ bool SaHandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText);
bool SaIsSupportedAreasChangeAllowed();
diff --git a/examples/rvc-app/rvc-common/include/rvc-service-area-delegate.h b/examples/rvc-app/rvc-common/include/rvc-service-area-delegate.h
index fdad4f8..c6be8aa 100644
--- a/examples/rvc-app/rvc-common/include/rvc-service-area-delegate.h
+++ b/examples/rvc-app/rvc-common/include/rvc-service-area-delegate.h
@@ -30,7 +30,7 @@
class RvcDevice;
typedef bool (RvcDevice::*IsSetSelectedAreasAllowedCallback)(MutableCharSpan & statusText);
-typedef bool (RvcDevice::*HandleSkipCurrentAreaCallback)(uint32_t skippedArea, MutableCharSpan & skipStatusText);
+typedef bool (RvcDevice::*HandleSkipAreaCallback)(uint32_t skippedArea, MutableCharSpan & skipStatusText);
typedef bool (RvcDevice::*IsChangeAllowedSimpleCallback)();
namespace ServiceArea {
@@ -46,8 +46,8 @@
RvcDevice * mIsSetSelectedAreasAllowedDeviceInstance;
IsSetSelectedAreasAllowedCallback mIsSetSelectedAreasAllowedCallback;
- RvcDevice * mHandleSkipCurrentAreaDeviceInstance;
- HandleSkipCurrentAreaCallback mHandleSkipCurrentAreaCallback;
+ RvcDevice * mHandleSkipAreaDeviceInstance;
+ HandleSkipAreaCallback mHandleSkipAreaCallback;
RvcDevice * mIsSupportedAreasChangeAllowedDeviceInstance;
IsChangeAllowedSimpleCallback mIsSupportedAreasChangeAllowedCallback;
RvcDevice * mIsSupportedMapChangeAllowedDeviceInstance;
@@ -82,7 +82,7 @@
bool IsValidSelectAreasSet(const ServiceArea::Commands::SelectAreas::DecodableType & req,
ServiceArea::SelectAreasStatus & areaStatus, MutableCharSpan & statusText) override;
- bool HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText) override;
+ bool HandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText) override;
//*************************************************************************
// Supported Areas accessors
@@ -169,10 +169,10 @@
mIsSetSelectedAreasAllowedDeviceInstance = instance;
}
- void SetHandleSkipCurrentAreaCallback(HandleSkipCurrentAreaCallback callback, RvcDevice * instance)
+ void SetHandleSkipAreaCallback(HandleSkipAreaCallback callback, RvcDevice * instance)
{
- mHandleSkipCurrentAreaCallback = callback;
- mHandleSkipCurrentAreaDeviceInstance = instance;
+ mHandleSkipAreaCallback = callback;
+ mHandleSkipAreaDeviceInstance = instance;
}
void SetIsSupportedAreasChangeAllowedCallback(IsChangeAllowedSimpleCallback callback, RvcDevice * instance)
diff --git a/examples/rvc-app/rvc-common/pics/RVC Clean Mode Cluster Test Plan.xml b/examples/rvc-app/rvc-common/pics/RVC Clean Mode Cluster Test Plan.xml
index ce0ddaa..fa0b258 100644
--- a/examples/rvc-app/rvc-common/pics/RVC Clean Mode Cluster Test Plan.xml
+++ b/examples/rvc-app/rvc-common/pics/RVC Clean Mode Cluster Test Plan.xml
@@ -1,13 +1,20 @@
<?xml version="1.0" encoding="utf-8"?><!--
-Autogenerated xml file - Version No:V_21_TE2-FALL2023
-Generated date:2023-08-03 21:56:43
+Autogenerated xml file - Version No:V_32_1_4_TE2_FALL_2024
+Generated date:2024-08-09 05:01:19
Cluster Name -RVC Clean Mode Cluster Test Plan
XML PICS -Ref Document:
-version master a35005c,
+version master 8f9bd8c,
Draft
-2023-08-03 08:35:53 -0700
+2024-08-08 16:19:15 -0700
--><clusterPICS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Generic-PICS-XML-Schema.xsd">
- <!--General cluster information-->
+ <!--General cluster information
+ Notes:
+ - PICS definition table contains PICS from other clusters that may be needed to run all the test cases.
+ - To load these PICS, refer to the following clusters.
+ PICS Cluster Name Reference
+ RVCRUNM.S.A0000 RVC Run Mode Cluster Test Plan 103.2.2. [TC-RVCCLEANM-2.2] Change to Mode restrictions with DUT as Server - allclusters.html[pdf]
+ RVCRUNM.S.A0001 RVC Run Mode Cluster Test Plan 103.2.2. [TC-RVCCLEANM-2.2] Change to Mode restrictions with DUT as Server - allclusters.html[pdf]
+ -->
<name>RVC Clean Mode Cluster Test Plan</name>
<clusterId> </clusterId>
<picsRoot> </picsRoot>
@@ -16,7 +23,7 @@
<picsItem>
<itemNumber>RVCCLEANM.S</itemNumber>
<feature>Does the device implement the RVCCLEANM cluster as a server?</feature>
- <reference>89.1. Role - allclusters.html[pdf]</reference>
+ <reference>99.1. Role - allclusters.html[pdf]</reference>
<status>O</status>
<support>true</support>
</picsItem>
@@ -26,16 +33,14 @@
<pixitItem>
<itemNumber>PIXIT.RVCCLEANM.MODE_CHANGE_FAIL</itemNumber>
<feature>Id of mode the device will fail to transition to, given its current state</feature>
- <reference>90. PIXIT Definition - allclusters.html[pdf]</reference>
- <status cond="RVCCLEANM.S">O</status>
- <support>0x01</support>
+ <reference>100. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCCLEANM.S">O</status><support>n/a</support>
</pixitItem>
<pixitItem>
<itemNumber>PIXIT.RVCCLEANM.MODE_CHANGE_OK</itemNumber>
<feature>Id of mode the device will successfully transition to, given its current state</feature>
- <reference>90. PIXIT Definition - allclusters.html[pdf]</reference>
- <status cond="RVCCLEANM.S">O</status>
- <support>0x01</support>
+ <reference>100. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCCLEANM.S">O</status><support>n/a</support>
</pixitItem>
</pixit>
<!--Server side PICS-->
@@ -45,31 +50,17 @@
<picsItem>
<itemNumber>RVCCLEANM.S.A0000</itemNumber>
<feature>Does the device implement the SupportedModes attribute?</feature>
- <reference>89.2.2. Attributes - allclusters.html[pdf]</reference>
+ <reference>99.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCCLEANM.S.A0001</itemNumber>
<feature>Does the device implement the CurrentMode attribute?</feature>
- <reference>89.2.2. Attributes - allclusters.html[pdf]</reference>
+ <reference>99.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">M</status>
<support>true</support>
</picsItem>
- <picsItem>
- <itemNumber>RVCCLEANM.S.A0002</itemNumber>
- <feature>Does the device implement the StartUpMode attribute?</feature>
- <reference>89.2.2. Attributes - allclusters.html[pdf]</reference>
- <status cond="RVCCLEANM.S">O</status>
- <support>false</support>
- </picsItem>
- <picsItem>
- <itemNumber>RVCCLEANM.S.A0003</itemNumber>
- <feature>Does the device implement the OnMode attribute?</feature>
- <reference>89.2.2. Attributes - allclusters.html[pdf]</reference>
- <status cond="RVCCLEANM.S.F00">M</status>
- <support>false</support>
- </picsItem>
</attributes>
<!--Events PICS write-->
<events/>
@@ -78,7 +69,7 @@
<picsItem>
<itemNumber>RVCCLEANM.S.C01.Tx</itemNumber>
<feature>Does the device implement sending the ChangeToModeResponse command?</feature>
- <reference>89.2.4. Commands generated - allclusters.html[pdf]</reference>
+ <reference>99.2.3. Commands generated - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">M</status>
<support>true</support>
</picsItem>
@@ -88,7 +79,7 @@
<picsItem>
<itemNumber>RVCCLEANM.S.C00.Rsp</itemNumber>
<feature>Does the device implement receiving the ChangeToMode command?</feature>
- <reference>89.2.3. Commands received - allclusters.html[pdf]</reference>
+ <reference>99.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">M</status>
<support>true</support>
</picsItem>
@@ -96,9 +87,9 @@
<!--Features PICS write-->
<features>
<picsItem>
- <itemNumber>RVCCLEANM.S.F00</itemNumber>
- <feature>Does the device support depending on an On/Off cluster implemented on the same endpoint?</feature>
- <reference>89.2.1. Features - allclusters.html[pdf]</reference>
+ <itemNumber>RVCCLEANM.S.F16</itemNumber>
+ <feature>Does the device support changing clean modes from non-Idle states?</feature>
+ <reference>101.1. Features - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">O</status>
<support>false</support>
</picsItem>
@@ -108,10 +99,17 @@
<picsItem>
<itemNumber>RVCCLEANM.S.M.CAN_TEST_MODE_FAILURE</itemNumber>
<feature>Does the DUT support testing the failed ChangeToMode command?</feature>
- <reference>89.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>99.2.4. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCCLEANM.S">O</status>
<support>true</support>
</picsItem>
+ <picsItem>
+ <itemNumber>RVCCLEANM.S.M.CAN_MANUALLY_CONTROLLED</itemNumber>
+ <feature>Can the mode change be manually controlled?</feature>
+ <reference>99.2.4. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="RVCCLEANM.S">O</status>
+ <support>false</support>
+ </picsItem>
</manually>
</clusterSide>
<!--Client side PICS-->
diff --git a/examples/rvc-app/rvc-common/pics/RVC Operational State Cluster Test Plan.xml b/examples/rvc-app/rvc-common/pics/RVC Operational State Cluster Test Plan.xml
index c600445..59028fa 100644
--- a/examples/rvc-app/rvc-common/pics/RVC Operational State Cluster Test Plan.xml
+++ b/examples/rvc-app/rvc-common/pics/RVC Operational State Cluster Test Plan.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?><!--
-Autogenerated xml file - Version No:V_21_TE2-FALL2023
-Generated date:2023-08-03 21:56:43
+Autogenerated xml file - Version No:V_32_1_4_TE2_FALL_2024
+Generated date:2024-08-09 05:01:19
Cluster Name -RVC Operational State Cluster Test Plan
XML PICS -Ref Document:
-version master a35005c,
+version master 8f9bd8c,
Draft
-2023-08-03 08:35:53 -0700
+2024-08-08 16:19:15 -0700
--><clusterPICS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Generic-PICS-XML-Schema.xsd">
<!--General cluster information-->
<name>RVC Operational State Cluster Test Plan</name>
@@ -15,8 +15,8 @@
<usage>
<picsItem>
<itemNumber>RVCOPSTATE.S</itemNumber>
- <feature>Does the device implement the RVC Operational State cluster as a server?</feature>
- <reference>223.1. Role - allclusters.html[pdf]</reference>
+ <feature>Does the device implement the RVC Operational State Cluster as a server?</feature>
+ <reference>238.1. Role - allclusters.html[pdf]</reference>
<status>O</status>
<support>true</support>
</picsItem>
@@ -30,42 +30,42 @@
<picsItem>
<itemNumber>RVCOPSTATE.S.A0000</itemNumber>
<feature>Does the device implement the PhaseList attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.A0001</itemNumber>
<feature>Does the device implement the CurrentPhase attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.A0002</itemNumber>
<feature>Does the device implement the CountdownTime attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>false</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.A0003</itemNumber>
<feature>Does the device implement the OperationalStateList attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.A0004</itemNumber>
<feature>Does the device implement the OperationalState attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.A0005</itemNumber>
<feature>Does the device implement the OperationalError attribute?</feature>
- <reference>223.2.1. Attributes - allclusters.html[pdf]</reference>
+ <reference>238.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
@@ -75,14 +75,14 @@
<picsItem>
<itemNumber>RVCOPSTATE.S.E00</itemNumber>
<feature>Does the device implement the OperationalError Event ?</feature>
- <reference>223.2.4. Events - allclusters.html[pdf]</reference>
+ <reference>238.2.4. Events - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.E01</itemNumber>
<feature>Does the device implement the OperationCompletion Event ?</feature>
- <reference>223.2.4. Events - allclusters.html[pdf]</reference>
+ <reference>238.2.4. Events - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
@@ -92,8 +92,8 @@
<picsItem>
<itemNumber>RVCOPSTATE.S.C04.Tx</itemNumber>
<feature>Does the device implement generating the OperationalCommandResponse command?</feature>
- <reference>223.2.3. Commands generated - allclusters.html[pdf]</reference>
- <status cond="RVCOPSTATE.S.C00.Rsp OR RVCOPSTATE.S.C01.Rsp OR RVCOPSTATE.S.C02.Rsp OR RVCOPSTATE.S.C03.Rsp">M</status>
+ <reference>238.2.3. Commands generated - allclusters.html[pdf]</reference>
+ <status cond="RVCOPSTATE.S AND (RVCOPSTATE.S.C00.Rsp OR RVCOPSTATE.S.C01.Rsp OR RVCOPSTATE.S.C02.Rsp OR RVCOPSTATE.S.C03.Rsp)">M</status>
<support>true</support>
</picsItem>
</commandsGenerated>
@@ -102,28 +102,35 @@
<picsItem>
<itemNumber>RVCOPSTATE.S.C00.Rsp</itemNumber>
<feature>Does the device implement receiving the Pause command?</feature>
- <reference>223.2.2. Commands received - allclusters.html[pdf]</reference>
+ <reference>238.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.C01.Rsp</itemNumber>
<feature>Does the device implement receiving the Stop command?</feature>
- <reference>223.2.2. Commands received - allclusters.html[pdf]</reference>
+ <reference>238.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>false</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.C02.Rsp</itemNumber>
<feature>Does the device implement receiving the Start command?</feature>
- <reference>223.2.2. Commands received - allclusters.html[pdf]</reference>
+ <reference>238.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>false</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.C03.Rsp</itemNumber>
<feature>Does the device implement receiving the Resume command?</feature>
- <reference>223.2.2. Commands received - allclusters.html[pdf]</reference>
+ <reference>238.2.2. Commands received - allclusters.html[pdf]</reference>
+ <status cond="RVCOPSTATE.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>RVCOPSTATE.S.C80.Rsp</itemNumber>
+ <feature>Does the device implement receiving the GoHome command?</feature>
+ <reference>238.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
@@ -135,136 +142,143 @@
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_STOPPED</itemNumber>
<feature>Does the DUT support testing the Stopped(0x00) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_RUNNING</itemNumber>
<feature>Does the DUT support testing the Running(0x01) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_PAUSED</itemNumber>
<feature>Does the DUT support testing the Paused(0x02) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_ERROR</itemNumber>
<feature>Does the DUT support testing the Error(0x03) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_SEEKING_CHARGER</itemNumber>
<feature>Does the DUT support testing the SeekingCharger(0x40) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_CHARGING</itemNumber>
<feature>Does the DUT support testing the Charging(0x41) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ST_DOCKED</itemNumber>
<feature>Does the DUT support testing the Docked(0x42) operational state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_NO_ERROR</itemNumber>
<feature>Does the DUT support testing the NoError(0x00) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_UNABLE_TO_START_OR_RESUME</itemNumber>
<feature>Does the DUT support testing the UnableToStartOrResume(0x01) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_UNABLE_TO_COMPLETE_OPERATION</itemNumber>
<feature>Does the DUT support testing the UnableToCompleteOperation(0x02) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_COMMAND_INVALID_IN_STATE</itemNumber>
<feature>Does the DUT support testing the CommandInvalidInState(0x03) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_FAILED_TO_FIND_CHARGING_DOCK</itemNumber>
<feature>Does the DUT support testing the FailedToFindChargingDock(0x40) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_STUCK</itemNumber>
<feature>Does the DUT support testing the Stuck(0x41) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_DUST_BIN_MISSING</itemNumber>
<feature>Does the DUT support testing the DustBinMissing(0x42) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_DUST_BIN_FULL</itemNumber>
<feature>Does the DUT support testing the DustBinFull(0x43) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_WATER_TANK_EMPTY</itemNumber>
<feature>Does the DUT support testing the WaterTankEmpty(0x44) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_WATER_TANK_MISSING</itemNumber>
<feature>Does the DUT support testing the WaterTankMissing(0x45) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_WATER_TANK_LID_OPEN</itemNumber>
<feature>Does the DUT support testing the WaterTankLidOpen(0x46) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCOPSTATE.S.M.ERR_MOP_CLEANING_PAD_MISSING</itemNumber>
<feature>Does the DUT support testing the MopCleaningPadMissing(0x47) error state?</feature>
- <reference>223.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCOPSTATE.S">O</status>
<support>true</support>
</picsItem>
+ <picsItem>
+ <itemNumber>RVCOPSTATE.S.M.RESUME_AFTER_ERR</itemNumber>
+ <feature>Does the DUT support testing the Resume command after cleared error?</feature>
+ <reference>238.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="RVCOPSTATE.S">O</status>
+ <support>false</support>
+ </picsItem>
</manually>
</clusterSide>
<!--Client side PICS-->
diff --git a/examples/rvc-app/rvc-common/pics/RVC Run Mode Cluster Test Plan.xml b/examples/rvc-app/rvc-common/pics/RVC Run Mode Cluster Test Plan.xml
index 0bdd953..a3305b8 100644
--- a/examples/rvc-app/rvc-common/pics/RVC Run Mode Cluster Test Plan.xml
+++ b/examples/rvc-app/rvc-common/pics/RVC Run Mode Cluster Test Plan.xml
@@ -1,13 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
-Autogenerated xml file - Version No:V_21_TE2-FALL2023
-Generated date:2023-08-03 21:56:43
+Autogenerated xml file - Version No:V_32_1_4_TE2_FALL_2024
+Generated date:2024-08-09 05:01:19
Cluster Name -RVC Run Mode Cluster Test Plan
XML PICS -Ref Document:
-version master a35005c,
+version master 8f9bd8c,
Draft
-2023-08-03 08:35:53 -0700
+2024-08-08 16:19:15 -0700
--><clusterPICS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Generic-PICS-XML-Schema.xsd">
- <!--General cluster information-->
+ <!--General cluster information
+ Notes:
+ - PICS definition table contains PICS from other clusters that may be needed to run all the test cases.
+ - To load these PICS, refer to the following clusters.
+ PICS Cluster Name Reference
+ RVCOPSTATE.S.A0004 RVC Operational State Cluster Test Plan 97.2.2. [TC-RVCRUNM-2.2] Change to Mode restrictions with DUT as Server - allclusters.html[pdf]
+ -->
<name>RVC Run Mode Cluster Test Plan</name>
<clusterId> </clusterId>
<picsRoot> </picsRoot>
@@ -16,7 +22,7 @@
<picsItem>
<itemNumber>RVCRUNM.S</itemNumber>
<feature>Does the device implement the RVCRUNM cluster as a server?</feature>
- <reference>84.1. Role - allclusters.html[pdf]</reference>
+ <reference>93.1. Role - allclusters.html[pdf]</reference>
<status>O</status>
<support>true</support>
</picsItem>
@@ -26,16 +32,26 @@
<pixitItem>
<itemNumber>PIXIT.RVCRUNM.MODE_CHANGE_FAIL</itemNumber>
<feature>Id of mode the device will fail to transition to, given its current state</feature>
- <reference>85. PIXIT Definition - allclusters.html[pdf]</reference>
- <status cond="RVCRUNM.S">O</status>
- <support>0x02</support>
+ <reference>95. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCRUNM.S">O</status><support/>
</pixitItem>
<pixitItem>
<itemNumber>PIXIT.RVCRUNM.MODE_CHANGE_OK</itemNumber>
<feature>Id of mode the device will successfully transition to, given its current state</feature>
- <reference>85. PIXIT Definition - allclusters.html[pdf]</reference>
- <status cond="RVCRUNM.S">O</status>
- <support>0x00</support>
+ <reference>95. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCRUNM.S">O</status><support/>
+ </pixitItem>
+ <pixitItem>
+ <itemNumber>PIXIT.RVCRUNM.MODE_A</itemNumber>
+ <feature>Id of non-Idle mode the device can successfully switch to, given its current state</feature>
+ <reference>95. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCRUNM.S">O</status><support>0x01</support>
+ </pixitItem>
+ <pixitItem>
+ <itemNumber>PIXIT.RVCRUNM.MODE_B</itemNumber>
+ <feature>Id of non-Idle mode the device can successfully switch to, given its current state</feature>
+ <reference>95. PIXIT Definition - allclusters.html[pdf]</reference>
+ <status cond="RVCRUNM.S">O</status><support>0x02</support>
</pixitItem>
</pixit>
<!--Server side PICS-->
@@ -45,31 +61,17 @@
<picsItem>
<itemNumber>RVCRUNM.S.A0000</itemNumber>
<feature>Does the device implement the SupportedModes attribute?</feature>
- <reference>84.2.2. Attributes - allclusters.html[pdf]</reference>
+ <reference>93.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">M</status>
<support>true</support>
</picsItem>
<picsItem>
<itemNumber>RVCRUNM.S.A0001</itemNumber>
<feature>Does the device implement the CurrentMode attribute?</feature>
- <reference>84.2.2. Attributes - allclusters.html[pdf]</reference>
+ <reference>93.2.1. Attributes - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">M</status>
<support>true</support>
</picsItem>
- <picsItem>
- <itemNumber>RVCRUNM.S.A0002</itemNumber>
- <feature>Does the device implement the StartUpMode attribute?</feature>
- <reference>84.2.2. Attributes - allclusters.html[pdf]</reference>
- <status cond="RVCRUNM.S">O</status>
- <support>false</support>
- </picsItem>
- <picsItem>
- <itemNumber>RVCRUNM.S.A0003</itemNumber>
- <feature>Does the device implement the OnMode attribute?</feature>
- <reference>84.2.2. Attributes - allclusters.html[pdf]</reference>
- <status cond="RVCRUNM.S.F00">M</status>
- <support>false</support>
- </picsItem>
</attributes>
<!--Events PICS write-->
<events/>
@@ -78,7 +80,7 @@
<picsItem>
<itemNumber>RVCRUNM.S.C01.Tx</itemNumber>
<feature>Does the device implement sending the ChangeToModeResponse command?</feature>
- <reference>84.2.4. Commands generated - allclusters.html[pdf]</reference>
+ <reference>93.2.3. Commands generated - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">M</status>
<support>true</support>
</picsItem>
@@ -88,7 +90,7 @@
<picsItem>
<itemNumber>RVCRUNM.S.C00.Rsp</itemNumber>
<feature>Does the device implement receiving the ChangeToMode command?</feature>
- <reference>84.2.3. Commands received - allclusters.html[pdf]</reference>
+ <reference>93.2.2. Commands received - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">M</status>
<support>true</support>
</picsItem>
@@ -96,9 +98,9 @@
<!--Features PICS write-->
<features>
<picsItem>
- <itemNumber>RVCRUNM.S.F00</itemNumber>
- <feature>Does the device support depending on an On/Off cluster implemented on the same endpoint?</feature>
- <reference>84.2.1. Features - allclusters.html[pdf]</reference>
+ <itemNumber>RVCRUNM.S.F16</itemNumber>
+ <feature>Does the device support support changing run modes from non-Idle states?</feature>
+ <reference>94.1. Features - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">O</status>
<support>false</support>
</picsItem>
@@ -108,10 +110,23 @@
<picsItem>
<itemNumber>RVCRUNM.S.M.CAN_TEST_MODE_FAILURE</itemNumber>
<feature>Does the DUT support testing the failed ChangeToMode command?</feature>
- <reference>84.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <reference>93.2.4. Manual controllable - allclusters.html[pdf]</reference>
<status cond="RVCRUNM.S">O</status>
<support>true</support>
</picsItem>
+ <picsItem>
+ <itemNumber>RVCRUNM.S.M.CAN_MANUALLY_CONTROLLED</itemNumber>
+ <feature>Can the mode change be manually controlled?</feature>
+ <reference>93.2.4. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="RVCRUNM.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>RVCOPSTATE.M.ST_STOPPED | RVCOPSTATE.M.ST_PAUSED | RVCOPSTATE.M.ST_CHARGING | RVCOPSTATE.M.ST_DOCKED</itemNumber><feature/>
+ <reference>97.2.2. [TC-RVCRUNM-2.2] Change to Mode restrictions with DUT as Server - allclusters.html[pdf]</reference>
+ <status>O</status>
+ <support>true</support>
+ </picsItem>
</manually>
</clusterSide>
<!--Client side PICS-->
diff --git a/examples/rvc-app/rvc-common/pics/Service Area Cluster Test Plan.xml b/examples/rvc-app/rvc-common/pics/Service Area Cluster Test Plan.xml
new file mode 100644
index 0000000..665504f
--- /dev/null
+++ b/examples/rvc-app/rvc-common/pics/Service Area Cluster Test Plan.xml
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+Autogenerated xml file - Version No:V_32_1_4_TE2_FALL_2024
+Generated date:2024-08-09 05:01:19
+Cluster Name -Service Area Cluster Test Plan
+XML PICS -Ref Document:
+version master 8f9bd8c,
+Draft
+2024-08-08 16:19:15 -0700
+--><clusterPICS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Generic-PICS-XML-Schema.xsd">
+ <!--General cluster information-->
+ <name>Service Area Cluster Test Plan</name>
+ <clusterId> </clusterId>
+ <picsRoot> </picsRoot>
+ <!--Cluster role information-->
+ <usage>
+ <picsItem>
+ <itemNumber>SEAR.S</itemNumber>
+ <feature>Does the device implement the Service Area cluster as a server?</feature>
+ <reference>306.1. Role - allclusters.html[pdf]</reference>
+ <status>O</status>
+ <support>true</support>
+ </picsItem>
+ </usage>
+ <!--PIXIT-->
+ <pixit/>
+ <!--Server side PICS-->
+ <clusterSide type="Server">
+ <!--Attributes PICS write-->
+ <attributes>
+ <picsItem>
+ <itemNumber>SEAR.S.A0000</itemNumber>
+ <feature>Does the device implement the SupportedAreas attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">M</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.A0001</itemNumber>
+ <feature>Does the device implement the SupportedMaps attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S AND SEAR.S.F02">M</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.A0002</itemNumber>
+ <feature>Does the device implement the SelectedAreas attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">M</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.A0003</itemNumber>
+ <feature>Does the device implement the CurrentArea attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.A0004</itemNumber>
+ <feature>Does the device implement the EstimatedEndTime attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S AND SEAR.S.A0003">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.A0005</itemNumber>
+ <feature>Does the device implement the Progress attribute?</feature>
+ <reference>306.2.2. Attributes - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S AND SEAR.S.F01">M</status>
+ <support>true</support>
+ </picsItem>
+ </attributes>
+ <!--Events PICS write-->
+ <events/>
+ <!--Commands generated PICS write-->
+ <commandsGenerated>
+ <picsItem>
+ <itemNumber>SEAR.S.C01.Tx</itemNumber>
+ <feature>Does the device implement generating the SelectAreasResponse command?</feature>
+ <reference>306.2.4. Commands generated - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">M</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.C03.Tx</itemNumber>
+ <feature>Does the device implement generating the SkipAreaResponse command?</feature>
+ <reference>306.2.4. Commands generated - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S AND SEAR.S.C02.Rsp">M</status>
+ <support>true</support>
+ </picsItem>
+ </commandsGenerated>
+ <!--Commands received PICS write-->
+ <commandsReceived>
+ <picsItem>
+ <itemNumber>SEAR.S.C00.Rsp</itemNumber>
+ <feature>Does the device implement receiving the SelectAreas command?</feature>
+ <reference>306.2.3. Commands received - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">M</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.C02.Rsp</itemNumber>
+ <feature>Does the device implement receiving the SkipArea command?</feature>
+ <reference>306.2.3. Commands received - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ </commandsReceived>
+ <!--Features PICS write-->
+ <features>
+ <picsItem>
+ <itemNumber>SEAR.S.F00</itemNumber>
+ <feature>Does the device support changing the selected areas while running?</feature>
+ <reference>306.2.1. Features - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>false</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.F01</itemNumber>
+ <feature>Does the device support reporting the progress?</feature>
+ <reference>306.2.1. Features - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.F02</itemNumber>
+ <feature>Does the device support the maps feature?</feature>
+ <reference>306.2.1. Features - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ </features>
+ <!--Manual controllable PICS write-->
+ <manually>
+ <picsItem>
+ <itemNumber>SEAR.S.M.REMOVE_AREA</itemNumber>
+ <feature>Does the DUT support testing the effects of removing a SupportedAreas entry?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.ADD_AREA</itemNumber>
+ <feature>Does the DUT support testing the effects of adding a SupportedAreas entry?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.REMOVE_MAP</itemNumber>
+ <feature>Does the DUT support testing the effects of removing a SupportedMaps entry?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.ADD_MAP</itemNumber>
+ <feature>Does the DUT support testing the effects of adding a SupportedMaps entry?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.INVALID_STATE_FOR_SELECT_AREAS</itemNumber>
+ <feature>Does the DUT support testing the selecting areas while the device doesn’t allow that?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.VALID_STATE_FOR_SELECT_AREAS</itemNumber>
+ <feature>Does the DUT support testing the selecting areas while the device allows that?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>false</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.SELECT_AREAS_WHILE_NON_IDLE</itemNumber>
+ <feature>Does the DUT support testing the selecting areas while the device is a non-idle state?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.HAS_MANUAL_SELAREA_STATE_CONTROL</itemNumber>
+ <feature>Can the device state affecting SelectAreas be manually controlled?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.HAS_MANUAL_SKIP_STATE_CONTROL</itemNumber>
+ <feature>Can the device state affecting SkipArea be manually controlled?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.INVALID_STATE_FOR_SKIP</itemNumber>
+ <feature>Does the DUT support testing the SkipArea command while the device doesn’t allow that?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.NO_SELAREA_FOR_SKIP</itemNumber>
+ <feature>Does the DUT support testing the SkipArea command while SelectedAreas is null?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.VALID_STATE_FOR_SKIP</itemNumber>
+ <feature>Does the DUT support testing the SkipArea command while the device allows that?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ <picsItem>
+ <itemNumber>SEAR.S.M.HAS_MANUAL_OPERATING_STATE_CONTROL</itemNumber>
+ <feature>Can the device operating state (idle, operating, terminate operating) be manually controlled?</feature>
+ <reference>306.2.5. Manual controllable - allclusters.html[pdf]</reference>
+ <status cond="SEAR.S">O</status>
+ <support>true</support>
+ </picsItem>
+ </manually>
+ </clusterSide>
+ <!--Client side PICS-->
+ <clusterSide type="Client">
+ <!--Attributes PICS write-->
+ <attributes/>
+ <!--Events PICS write-->
+ <events/>
+ <!--Commands generated PICS write-->
+ <commandsGenerated/>
+ <!--Commands received PICS write-->
+ <commandsReceived/>
+ <!--Features PICS write-->
+ <features/>
+ <!--Manual controllable PICS write-->
+ <manually/>
+ </clusterSide>
+</clusterPICS>
\ No newline at end of file
diff --git a/examples/rvc-app/rvc-common/src/rvc-device.cpp b/examples/rvc-app/rvc-common/src/rvc-device.cpp
index 623c959..dac7db9 100644
--- a/examples/rvc-app/rvc-common/src/rvc-device.cpp
+++ b/examples/rvc-app/rvc-common/src/rvc-device.cpp
@@ -174,7 +174,7 @@
return true;
}
-bool RvcDevice::SaHandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
+bool RvcDevice::SaHandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
{
if (mServiceAreaInstance.GetCurrentArea() != skippedArea)
{
diff --git a/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp b/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp
index 9844729..9041efd 100644
--- a/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp
+++ b/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp
@@ -180,9 +180,9 @@
return true;
};
-bool RvcServiceAreaDelegate::HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
+bool RvcServiceAreaDelegate::HandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
{
- return (mHandleSkipCurrentAreaDeviceInstance->*mHandleSkipCurrentAreaCallback)(skippedArea, skipStatusText);
+ return (mHandleSkipAreaDeviceInstance->*mHandleSkipAreaCallback)(skippedArea, skipStatusText);
};
//*************************************************************************
diff --git a/src/app/clusters/service-area-server/service-area-delegate.h b/src/app/clusters/service-area-server/service-area-delegate.h
index 01df2fa..2e94228 100644
--- a/src/app/clusters/service-area-server/service-area-delegate.h
+++ b/src/app/clusters/service-area-server/service-area-delegate.h
@@ -120,7 +120,7 @@
* InvalidInMode, the StatusText field SHOULD indicate why the request is not allowed, given the current mode of the
* device, which may involve other clusters.
*/
- virtual bool HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
+ virtual bool HandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
{
// device support of this command is optional
CopyCharSpanToMutableCharSpan("Skip Current Area command not supported by device"_span, skipStatusText);
diff --git a/src/app/clusters/service-area-server/service-area-server.cpp b/src/app/clusters/service-area-server/service-area-server.cpp
index 0e562c7..a7e8127 100644
--- a/src/app/clusters/service-area-server/service-area-server.cpp
+++ b/src/app/clusters/service-area-server/service-area-server.cpp
@@ -123,7 +123,7 @@
case Commands::SkipArea::Id:
return CommandHandlerInterface::HandleCommand<Commands::SkipArea::DecodableType>(
- handlerContext, [this](HandlerContext & ctx, const auto & req) { HandleSkipCurrentAreaCmd(ctx, req); });
+ handlerContext, [this](HandlerContext & ctx, const auto & req) { HandleSkipAreaCmd(ctx, req); });
}
}
@@ -356,11 +356,11 @@
exitResponse(SelectAreasStatus::kSuccess, ""_span);
}
-void Instance::HandleSkipCurrentAreaCmd(HandlerContext & ctx, const Commands::SkipArea::DecodableType & req)
+void Instance::HandleSkipAreaCmd(HandlerContext & ctx, const Commands::SkipArea::DecodableType & req)
{
- ChipLogDetail(Zcl, "Service Area: HandleSkipCurrentArea");
+ ChipLogDetail(Zcl, "Service Area: HandleSkipArea");
- // On receipt of this command the device SHALL respond with a SkipCurrentAreaResponse command.
+ // On receipt of this command the device SHALL respond with a SkipAreaResponse command.
auto exitResponse = [ctx](SkipAreaStatus status, CharSpan statusText) {
Commands::SkipAreaResponse::Type response{
.status = status,
@@ -369,11 +369,11 @@
ctx.mCommandHandler.AddResponse(ctx.mRequestPath, response);
};
- // If the SelectedAreas attribute is null, the response status should be set to InvalidAreaList.
+ // The SkippedArea field SHALL match an entry in the SupportedAreas list.
// If the Status field is set to InvalidAreaList, the StatusText field SHALL be an empty string.
- if (mDelegate->GetNumberOfSelectedAreas() == 0)
+ if (!IsSupportedArea(req.skippedArea))
{
- ChipLogError(Zcl, "Selected Areas attribute is null");
+ ChipLogError(Zcl, "SkippedArea (%u) is not in the SupportedAreas attribute.", req.skippedArea);
exitResponse(SkipAreaStatus::kInvalidAreaList, ""_span);
return;
}
@@ -394,7 +394,7 @@
char skipStatusBuffer[kMaxSizeStatusText];
MutableCharSpan skipStatusText(skipStatusBuffer);
- if (!mDelegate->HandleSkipCurrentArea(req.skippedArea, skipStatusText))
+ if (!mDelegate->HandleSkipArea(req.skippedArea, skipStatusText))
{
exitResponse(SkipAreaStatus::kInvalidInMode, skipStatusText);
return;
diff --git a/src/app/clusters/service-area-server/service-area-server.h b/src/app/clusters/service-area-server/service-area-server.h
index 811499f..e023f24 100644
--- a/src/app/clusters/service-area-server/service-area-server.h
+++ b/src/app/clusters/service-area-server/service-area-server.h
@@ -124,7 +124,7 @@
* If the input value is invalid, returns the Interaction Model status code of INVALID_COMMAND.
* @param[in] req the command parameters.
*/
- void HandleSkipCurrentAreaCmd(HandlerContext & ctx, const Commands::SkipArea::DecodableType & req);
+ void HandleSkipAreaCmd(HandlerContext & ctx, const Commands::SkipArea::DecodableType & req);
//*************************************************************************
// attribute notifications