From 3545492cd3960d407c7038fdc6f0611cda8f7c94 Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Fri, 23 Jun 2023 20:58:15 +0530 Subject: [PATCH] Modified scripts JUNE 01 (#27011) * Modified scripts: ci-pics-values ciTests.json app1/ciTests.json app1/config.zap app2/config.zap manualTests.json PICS TC_AUDIOOUTPUT_7_2 TC_BINFO_2_1 TC_BRBINFO_2_1 TC_CC_2_2_Simulated TC_CC_6_5 TC_CHANNEL_5_2 TC_CHANNEL_5_3 TC_DGTHREAD_3_2_Simulated TC_MEDIAINPUT_3_11 TC_MEDIAINPUT_3_13 TC_MOD_1_2 TC_MOD_2_1 TC_MOD_2_3 TC_MOD_3_1 TC_MOD_3_2 TC_MOD_3_4 TC_PRS_2_1 TC_PS_1_1 TC_TMP_2_1 * Auto generated files * Restyled by whitespace * Restyled by prettier-json * Added anyOf keyword constraint check for TSTAT Removed TSTAT-2.2 test from ciTests.json file * Restyled by prettier-json * Modify CC-6.5 CI to pass all checks * Fix MediaInput-3.13 * Fix issue 27087 * Fixes issue 567 * Modified tests TC-PRS-2.1 TC-TMP-2.1 TC-DRLK-2.1 TC-WNCV-2.2 TC-WNCV-2.4 Auto generated files * Modified test TC-CC-6.3 * Fixes issue 565 * Modified TC-DRLK-2.1 & Ci-pics-value * Restyled by whitespace * Updated comment for DRLK-2.1 Added test TC-DRLK-2.8 Modified tests TC-DRLK-2.1 TC-DRLK-2.9 TC-TSTAT-2.2 Auto generated files * Auto generated files * Modified Ci-pics-value for DRLK tests * Disabled DRLK-2.8 in init.py Fixes issue 870 * Restyled by autopep8 * Auto generated files * Automated test TC-FAN-2.5 Simulated testcases TC-DRLK-3.1 TC-DGTHREAD-3.1 Modified tests TC-DRLK-2.3 TC-DRLK-2.4 TC-DRLK-2.12 * Auto generated files * Restyled by prettier-json --------- Co-authored-by: Restyled.io --- .../placeholder/linux/apps/app1/ciTests.json | 6 +- .../placeholder/linux/apps/app1/config.matter | 283 +- .../placeholder/linux/apps/app1/config.zap | 362 +- .../placeholder/linux/apps/app2/config.matter | 287 +- .../placeholder/linux/apps/app2/config.zap | 366 +- scripts/tests/chiptest/__init__.py | 1 + src/app/tests/suites/certification/PICS.yaml | 18 + .../Test_TC_AUDIOOUTPUT_7_2.yaml | 10 +- .../certification/Test_TC_BINFO_2_1.yaml | 25 + .../certification/Test_TC_BRBINFO_2_1.yaml | 28 +- .../suites/certification/Test_TC_CC_2_2.yaml | 1973 ------ .../Test_TC_CC_2_2_Simulated.yaml | 318 + .../suites/certification/Test_TC_CC_6_3.yaml | 4 +- .../suites/certification/Test_TC_CC_6_5.yaml | 213 + .../certification/Test_TC_CHANNEL_5_2.yaml | 8 +- .../certification/Test_TC_CHANNEL_5_3.yaml | 8 +- .../certification/Test_TC_DGSW_1_1.yaml | 4 +- .../certification/Test_TC_DGTHREAD_3_1.yaml | 563 -- .../Test_TC_DGTHREAD_3_1_Simulated.yaml | 174 + .../Test_TC_DGTHREAD_3_2_Simulated.yaml | 4 +- .../certification/Test_TC_DRLK_2_1.yaml | 2434 +++----- .../certification/Test_TC_DRLK_2_4.yaml | 49 +- .../certification/Test_TC_DRLK_2_8.yaml | 486 +- .../certification/Test_TC_DRLK_2_9.yaml | 99 +- .../certification/Test_TC_DRLK_3_1.yaml | 2834 --------- .../Test_TC_DRLK_3_1_Simulated.yaml | 212 + .../suites/certification/Test_TC_FAN_2_5.yaml | 41 + .../suites/certification/Test_TC_G_2_2.yaml | 99 +- .../suites/certification/Test_TC_G_2_3.yaml | 135 +- .../Test_TC_MEDIAINPUT_3_11.yaml | 15 +- .../Test_TC_MEDIAINPUT_3_13.yaml | 12 +- .../suites/certification/Test_TC_MOD_1_2.yaml | 38 +- .../suites/certification/Test_TC_MOD_1_3.yaml | 852 --- .../suites/certification/Test_TC_MOD_2_1.yaml | 99 +- .../suites/certification/Test_TC_MOD_2_2.yaml | 194 - .../suites/certification/Test_TC_MOD_2_3.yaml | 129 + .../suites/certification/Test_TC_MOD_3_1.yaml | 67 +- .../suites/certification/Test_TC_MOD_3_2.yaml | 50 +- .../suites/certification/Test_TC_MOD_3_3.yaml | 174 - .../suites/certification/Test_TC_MOD_3_4.yaml | 120 +- .../suites/certification/Test_TC_PRS_2_1.yaml | 44 +- .../suites/certification/Test_TC_PS_1_1.yaml | 6 + .../suites/certification/Test_TC_PS_3_1.yaml | 589 ++ .../Test_TC_PS_3_1_Simulated.yaml | 420 -- .../suites/certification/Test_TC_TMP_2_1.yaml | 6 +- .../certification/Test_TC_TSTAT_2_1.yaml | 6 +- .../certification/Test_TC_TSTAT_2_2.yaml | 99 +- .../certification/Test_TC_WNCV_2_2.yaml | 70 +- .../certification/Test_TC_WNCV_2_4.yaml | 48 +- .../tests/suites/certification/ci-pics-values | 36 +- src/app/tests/suites/ciTests.json | 11 +- src/app/tests/suites/manualTests.json | 21 +- .../chip-tool/zap-generated/test/Commands.h | 5337 +++++------------ .../zap-generated/test/Commands.h | 2330 ++++--- .../app1/zap-generated/test/Commands.h | 1169 +++- .../app2/zap-generated/test/Commands.h | 1169 +++- 56 files changed, 9310 insertions(+), 14845 deletions(-) delete mode 100644 src/app/tests/suites/certification/Test_TC_CC_2_2.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_CC_6_5.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_FAN_2_5.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_MOD_2_3.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_PS_3_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_PS_3_1_Simulated.yaml diff --git a/examples/placeholder/linux/apps/app1/ciTests.json b/examples/placeholder/linux/apps/app1/ciTests.json index f86e8b6d8e1e64..33fb9fa05e1bdf 100644 --- a/examples/placeholder/linux/apps/app1/ciTests.json +++ b/examples/placeholder/linux/apps/app1/ciTests.json @@ -11,7 +11,6 @@ "Test_TC_G_3_1_Simulated", "Test_TC_I_3_1_Simulated", "Test_TC_PRS_3_1_Simulated", - "Test_TC_PS_3_1_Simulated", "Test_TC_PSCFG_3_1_Simulated", "Test_TC_RH_3_1_Simulated", "Test_TC_SWTCH_3_1_Simulated", @@ -44,7 +43,10 @@ "Test_TC_OO_3_2_Simulated", "Test_TC_TSUIC_3_1_Simulated", "Test_TC_PCC_3_1_Simulated", - "Test_TC_TMP_3_1_Simulated" + "Test_TC_TMP_3_1_Simulated", + "Test_TC_CC_2_2_Simulated", + "Test_TC_DGTHREAD_3_1_Simulated", + "Test_TC_DRLK_3_1_Simulated" ], "collection": ["Test"] } diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index ff894c4b436aac..914da728d08372 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -33,6 +33,54 @@ struct OperationalStateStruct { optional char_string<64> operationalStateLabel = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ +client cluster Identify = 3 { + enum EffectIdentifierEnum : ENUM8 { + kBlink = 0; + kBreathe = 1; + kOkay = 2; + kChannelChange = 11; + kFinishEffect = 254; + kStopEffect = 255; + } + + enum EffectVariantEnum : ENUM8 { + kDefault = 0; + } + + enum IdentifyTypeEnum : ENUM8 { + kNone = 0; + kLightOutput = 1; + kVisibleIndicator = 2; + kAudibleBeep = 3; + kDisplay = 4; + kActuator = 5; + } + + attribute int16u identifyTime = 0; + readonly attribute IdentifyTypeEnum identifyType = 1; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct IdentifyRequest { + INT16U identifyTime = 0; + } + + request struct TriggerEffectRequest { + EffectIdentifierEnum effectIdentifier = 0; + EffectVariantEnum effectVariant = 1; + } + + /** Command description for Identify */ + command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ + command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; +} + /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum EffectIdentifierEnum : ENUM8 { @@ -2193,6 +2241,7 @@ server cluster BridgedDeviceBasicInformation = 57 { readonly attribute long_char_string<256> productURL = 13; readonly attribute char_string<64> productLabel = 14; readonly attribute char_string<32> serialNumber = 15; + readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; readonly attribute ProductAppearanceStruct productAppearance = 20; readonly attribute command_id generatedCommandList[] = 65528; @@ -3783,9 +3832,69 @@ server cluster DoorLock = 257 { optional OCTET_STRING PINCode = 1; } + request struct SetWeekDayScheduleRequest { + INT8U weekDayIndex = 0; + INT16U userIndex = 1; + DaysMaskMap daysMask = 2; + INT8U startHour = 3; + INT8U startMinute = 4; + INT8U endHour = 5; + INT8U endMinute = 6; + } + + request struct ClearWeekDayScheduleRequest { + INT8U weekDayIndex = 0; + INT16U userIndex = 1; + } + + request struct SetYearDayScheduleRequest { + INT8U yearDayIndex = 0; + INT16U userIndex = 1; + epoch_s localStartTime = 2; + epoch_s localEndTime = 3; + } + + request struct ClearYearDayScheduleRequest { + INT8U yearDayIndex = 0; + INT16U userIndex = 1; + } + + request struct SetHolidayScheduleRequest { + INT8U holidayIndex = 0; + epoch_s localStartTime = 1; + epoch_s localEndTime = 2; + OperatingModeEnum operatingMode = 3; + } + + request struct ClearHolidayScheduleRequest { + INT8U holidayIndex = 0; + } + + request struct SetUserRequest { + DataOperationTypeEnum operationType = 0; + INT16U userIndex = 1; + nullable CHAR_STRING userName = 2; + nullable INT32U userUniqueID = 3; + nullable UserStatusEnum userStatus = 4; + nullable UserTypeEnum userType = 5; + nullable CredentialRuleEnum credentialRule = 6; + } + + request struct ClearCredentialRequest { + nullable CredentialStruct credential = 0; + } + timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1; timed command UnlockWithTimeout(UnlockWithTimeoutRequest): DefaultSuccess = 3; + command access(invoke: administer) SetWeekDaySchedule(SetWeekDayScheduleRequest): DefaultSuccess = 11; + command access(invoke: administer) ClearWeekDaySchedule(ClearWeekDayScheduleRequest): DefaultSuccess = 13; + command access(invoke: administer) SetYearDaySchedule(SetYearDayScheduleRequest): DefaultSuccess = 14; + command access(invoke: administer) ClearYearDaySchedule(ClearYearDayScheduleRequest): DefaultSuccess = 16; + command access(invoke: administer) SetHolidaySchedule(SetHolidayScheduleRequest): DefaultSuccess = 17; + command access(invoke: administer) ClearHolidaySchedule(ClearHolidayScheduleRequest): DefaultSuccess = 19; + timed command access(invoke: administer) SetUser(SetUserRequest): DefaultSuccess = 26; + timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38; } /** Provides an interface for controlling and adjusting automatic window coverings. */ @@ -6617,20 +6726,21 @@ endpoint 0 { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute vendorName; - callback attribute vendorID; - callback attribute productName; + ram attribute vendorName; + ram attribute vendorID; + ram attribute productName; persist attribute nodeLabel; - callback attribute hardwareVersion; - callback attribute hardwareVersionString; - callback attribute softwareVersion; - callback attribute softwareVersionString; - callback attribute manufacturingDate; - callback attribute partNumber; - callback attribute productURL; - callback attribute productLabel; - callback attribute serialNumber; - callback attribute uniqueID; + ram attribute hardwareVersion default = 0; + ram attribute hardwareVersionString; + ram attribute softwareVersion default = 0; + ram attribute softwareVersionString; + ram attribute manufacturingDate default = "20210614123456ZZ"; + ram attribute partNumber; + ram attribute productURL; + ram attribute productLabel; + ram attribute serialNumber; + ram attribute reachable default = 1; + ram attribute uniqueID; callback attribute productAppearance; ram attribute featureMap default = 0; ram attribute clusterRevision default = 2; @@ -6685,42 +6795,42 @@ endpoint 0 { } server cluster DoorLock { - callback attribute lockState; - callback attribute lockType; + ram attribute lockState; + ram attribute lockType; ram attribute actuatorEnabled; - callback attribute doorState; - callback attribute doorOpenEvents; - callback attribute doorClosedEvents; - callback attribute openPeriod; - callback attribute numberOfTotalUsersSupported default = 0; - callback attribute numberOfPINUsersSupported default = 0; - callback attribute numberOfRFIDUsersSupported default = 0; - callback attribute numberOfWeekDaySchedulesSupportedPerUser default = 0; - callback attribute numberOfYearDaySchedulesSupportedPerUser default = 0; - callback attribute numberOfHolidaySchedulesSupported default = 0; - callback attribute maxPINCodeLength; - callback attribute minPINCodeLength; - callback attribute maxRFIDCodeLength; - callback attribute minRFIDCodeLength; - callback attribute credentialRulesSupport default = 1; - callback attribute numberOfCredentialsSupportedPerUser default = 0; - callback attribute language; - callback attribute LEDSettings default = 0; - callback attribute autoRelockTime; - callback attribute soundVolume default = 0; - callback attribute operatingMode default = 0; - callback attribute supportedOperatingModes default = 65526; - callback attribute defaultConfigurationRegister default = 0; - callback attribute enableLocalProgramming default = 1; - callback attribute enableOneTouchLocking default = 0; - callback attribute enableInsideStatusLED default = 0; - callback attribute enablePrivacyModeButton default = 0; - callback attribute localProgrammingFeatures default = 0; - callback attribute wrongCodeEntryLimit; - callback attribute userCodeTemporaryDisableTime; - callback attribute sendPINOverTheAir default = 0; - callback attribute requirePINforRemoteOperation default = 0; - callback attribute expiringUserTimeout; + ram attribute doorState; + ram attribute doorOpenEvents; + ram attribute doorClosedEvents; + ram attribute openPeriod; + ram attribute numberOfTotalUsersSupported default = 0; + ram attribute numberOfPINUsersSupported default = 0; + ram attribute numberOfRFIDUsersSupported default = 0; + ram attribute numberOfWeekDaySchedulesSupportedPerUser default = 0; + ram attribute numberOfYearDaySchedulesSupportedPerUser default = 0; + ram attribute numberOfHolidaySchedulesSupported default = 0; + ram attribute maxPINCodeLength; + ram attribute minPINCodeLength; + ram attribute maxRFIDCodeLength; + ram attribute minRFIDCodeLength; + ram attribute credentialRulesSupport default = 1; + ram attribute numberOfCredentialsSupportedPerUser default = 0; + ram attribute language; + ram attribute LEDSettings default = 0; + ram attribute autoRelockTime; + ram attribute soundVolume default = 0; + ram attribute operatingMode default = 0; + ram attribute supportedOperatingModes default = 65526; + ram attribute defaultConfigurationRegister default = 0; + ram attribute enableLocalProgramming default = 1; + ram attribute enableOneTouchLocking default = 0; + ram attribute enableInsideStatusLED default = 0; + ram attribute enablePrivacyModeButton default = 0; + ram attribute localProgrammingFeatures default = 0; + ram attribute wrongCodeEntryLimit; + ram attribute userCodeTemporaryDisableTime; + ram attribute sendPINOverTheAir default = 0; + ram attribute requirePINforRemoteOperation default = 0; + ram attribute expiringUserTimeout; ram attribute clusterRevision default = 6; } @@ -6983,6 +7093,7 @@ endpoint 0 { } endpoint 1 { device type anonymousEndpointType = 257, version 1; + binding cluster Identify; binding cluster OnOff; binding cluster LevelControl; binding cluster LocalizationConfiguration; @@ -7127,54 +7238,54 @@ endpoint 1 { server cluster ColorControl { ram attribute currentHue default = 0x00; ram attribute currentSaturation default = 0x00; - callback attribute remainingTime default = 0x00; + ram attribute remainingTime default = 0x00; ram attribute currentX default = 0x616B; ram attribute currentY default = 0x607D; - callback attribute driftCompensation; - callback attribute compensationText; + ram attribute driftCompensation; + ram attribute compensationText; ram attribute colorTemperatureMireds default = 0x00FA; - callback attribute colorMode default = 1; + ram attribute colorMode default = 1; ram attribute options default = 0x00; - callback attribute numberOfPrimaries; - callback attribute primary1X; - callback attribute primary1Y; - callback attribute primary1Intensity; - callback attribute primary2X; - callback attribute primary2Y; - callback attribute primary2Intensity; - callback attribute primary3X; - callback attribute primary3Y; - callback attribute primary3Intensity; - callback attribute primary4X; - callback attribute primary4Y; - callback attribute primary4Intensity; - callback attribute primary5X; - callback attribute primary5Y; - callback attribute primary5Intensity; - callback attribute primary6X; - callback attribute primary6Y; - callback attribute primary6Intensity; - callback attribute whitePointX; - callback attribute whitePointY; - callback attribute colorPointRX; - callback attribute colorPointRY; - callback attribute colorPointRIntensity; - callback attribute colorPointGX; - callback attribute colorPointGY; - callback attribute colorPointGIntensity; - callback attribute colorPointBX; - callback attribute colorPointBY; - callback attribute colorPointBIntensity; + ram attribute numberOfPrimaries; + ram attribute primary1X; + ram attribute primary1Y; + ram attribute primary1Intensity; + ram attribute primary2X; + ram attribute primary2Y; + ram attribute primary2Intensity; + ram attribute primary3X; + ram attribute primary3Y; + ram attribute primary3Intensity; + ram attribute primary4X; + ram attribute primary4Y; + ram attribute primary4Intensity; + ram attribute primary5X; + ram attribute primary5Y; + ram attribute primary5Intensity; + ram attribute primary6X; + ram attribute primary6Y; + ram attribute primary6Intensity; + ram attribute whitePointX; + ram attribute whitePointY; + ram attribute colorPointRX; + ram attribute colorPointRY; + ram attribute colorPointRIntensity; + ram attribute colorPointGX; + ram attribute colorPointGY; + ram attribute colorPointGIntensity; + ram attribute colorPointBX; + ram attribute colorPointBY; + ram attribute colorPointBIntensity; ram attribute enhancedCurrentHue default = 0x00; - callback attribute enhancedColorMode default = 0x01; + ram attribute enhancedColorMode default = 0x01; ram attribute colorLoopActive default = 0x00; ram attribute colorLoopDirection default = 0x00; ram attribute colorLoopTime default = 0x0019; ram attribute colorLoopStartEnhancedHue default = 0x2300; ram attribute colorLoopStoredEnhancedHue default = 0x00; - callback attribute colorCapabilities default = 0x00; - callback attribute colorTempPhysicalMinMireds default = 0x00; - callback attribute colorTempPhysicalMaxMireds default = 0xfeff; + ram attribute colorCapabilities default = 0x00; + ram attribute colorTempPhysicalMinMireds default = 0x00; + ram attribute colorTempPhysicalMaxMireds default = 0xfeff; ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index 4ff350fe8ff315..bbeb49c3caa504 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -4286,7 +4286,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4302,7 +4302,7 @@ "side": "server", "type": "vendor_id", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4318,7 +4318,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4350,10 +4350,10 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4366,7 +4366,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4382,10 +4382,10 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4398,7 +4398,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4414,10 +4414,10 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "20210614123456ZZ", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4430,7 +4430,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4446,7 +4446,7 @@ "side": "server", "type": "long_char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4462,7 +4462,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4478,7 +4478,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4493,11 +4493,11 @@ "mfgCode": null, "side": "server", "type": "boolean", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4510,7 +4510,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4531,7 +4531,7 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, + "minInterval": 1, "maxInterval": 65344, "reportableChange": 0 }, @@ -5482,7 +5482,7 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 }, { "name": "UnlockDoor", @@ -5490,7 +5490,7 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 }, { "name": "UnlockWithTimeout", @@ -5498,7 +5498,127 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 + }, + { + "name": "SetWeekDaySchedule", + "code": 11, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetWeekDaySchedule", + "code": 12, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearWeekDaySchedule", + "code": 13, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetYearDaySchedule", + "code": 14, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetYearDaySchedule", + "code": 15, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearYearDaySchedule", + "code": 16, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetHolidayDaySchedule", + "code": 17, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetHolidayDaySchedule", + "code": 18, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CleartHolidayDaySchedule", + "code": 19, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetUser", + "code": 26, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetUser", + "code": 27, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearUser", + "code": 28, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetCredential", + "code": 34, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "GetCredentialStatus", + "code": 36, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearCredential", + "code": 38, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 } ], "attributes": [ @@ -5527,6 +5647,56 @@ "define": "DOOR_LOCK_CLUSTER", "side": "server", "enabled": 1, + "commands": [ + { + "name": "GetWeekDayScheduleResponse", + "code": 12, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetYearDayScheduleResponse", + "code": 15, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetHolidayScheduleResponse", + "code": 18, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetUserResponse", + "code": 27, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "SetCredentialResponse", + "code": 35, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetCredentialStatusResponse", + "code": 37, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { "name": "LockState", @@ -5535,7 +5705,7 @@ "side": "server", "type": "DlLockState", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5551,7 +5721,7 @@ "side": "server", "type": "DlLockType", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5583,7 +5753,7 @@ "side": "server", "type": "DoorStateEnum", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5599,7 +5769,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5615,7 +5785,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5631,7 +5801,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5647,7 +5817,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5663,7 +5833,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5679,7 +5849,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5695,7 +5865,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5711,7 +5881,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5727,7 +5897,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5743,7 +5913,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5759,7 +5929,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5775,7 +5945,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5791,7 +5961,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5807,7 +5977,7 @@ "side": "server", "type": "DlCredentialRuleMask", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "1", @@ -5823,7 +5993,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5839,7 +6009,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5855,7 +6025,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5871,7 +6041,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5887,7 +6057,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5903,7 +6073,7 @@ "side": "server", "type": "OperatingModeEnum", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5919,7 +6089,7 @@ "side": "server", "type": "DlSupportedOperatingModes", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "65526", @@ -5935,7 +6105,7 @@ "side": "server", "type": "DlDefaultConfigurationRegister", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5951,7 +6121,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "1", @@ -5967,7 +6137,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5983,7 +6153,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5999,7 +6169,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6015,7 +6185,7 @@ "side": "server", "type": "DlLocalProgrammingFeatures", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6031,7 +6201,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6047,7 +6217,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6063,7 +6233,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6079,7 +6249,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6095,7 +6265,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10582,7 +10752,7 @@ "mfgCode": null, "define": "IDENTIFY_CLUSTER", "side": "client", - "enabled": 0, + "enabled": 1, "commands": [ { "name": "Identify", @@ -13269,7 +13439,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -13317,7 +13487,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13333,7 +13503,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13365,7 +13535,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "1", @@ -13397,7 +13567,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13413,7 +13583,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13429,7 +13599,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13445,7 +13615,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13461,7 +13631,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13477,7 +13647,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13493,7 +13663,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13509,7 +13679,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13525,7 +13695,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13541,7 +13711,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13557,7 +13727,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13573,7 +13743,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13589,7 +13759,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13605,7 +13775,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13621,7 +13791,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13637,7 +13807,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13653,7 +13823,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13669,7 +13839,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13685,7 +13855,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13701,7 +13871,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13717,7 +13887,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13733,7 +13903,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13749,7 +13919,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13765,7 +13935,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13781,7 +13951,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13797,7 +13967,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13813,7 +13983,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13829,7 +13999,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13845,7 +14015,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13861,7 +14031,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13893,7 +14063,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x01", @@ -13989,7 +14159,7 @@ "side": "server", "type": "bitmap16", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -14005,7 +14175,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -14021,7 +14191,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0xfeff", diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 8380ee4e47e109..628f03280ad070 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -33,6 +33,54 @@ struct OperationalStateStruct { optional char_string<64> operationalStateLabel = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ +client cluster Identify = 3 { + enum EffectIdentifierEnum : ENUM8 { + kBlink = 0; + kBreathe = 1; + kOkay = 2; + kChannelChange = 11; + kFinishEffect = 254; + kStopEffect = 255; + } + + enum EffectVariantEnum : ENUM8 { + kDefault = 0; + } + + enum IdentifyTypeEnum : ENUM8 { + kNone = 0; + kLightOutput = 1; + kVisibleIndicator = 2; + kAudibleBeep = 3; + kDisplay = 4; + kActuator = 5; + } + + attribute int16u identifyTime = 0; + readonly attribute IdentifyTypeEnum identifyType = 1; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct IdentifyRequest { + INT16U identifyTime = 0; + } + + request struct TriggerEffectRequest { + EffectIdentifierEnum effectIdentifier = 0; + EffectVariantEnum effectVariant = 1; + } + + /** Command description for Identify */ + command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ + command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; +} + /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum EffectIdentifierEnum : ENUM8 { @@ -2152,6 +2200,7 @@ server cluster BridgedDeviceBasicInformation = 57 { readonly attribute long_char_string<256> productURL = 13; readonly attribute char_string<64> productLabel = 14; readonly attribute char_string<32> serialNumber = 15; + readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; readonly attribute ProductAppearanceStruct productAppearance = 20; readonly attribute command_id generatedCommandList[] = 65528; @@ -3742,9 +3791,69 @@ server cluster DoorLock = 257 { optional OCTET_STRING PINCode = 1; } + request struct SetWeekDayScheduleRequest { + INT8U weekDayIndex = 0; + INT16U userIndex = 1; + DaysMaskMap daysMask = 2; + INT8U startHour = 3; + INT8U startMinute = 4; + INT8U endHour = 5; + INT8U endMinute = 6; + } + + request struct ClearWeekDayScheduleRequest { + INT8U weekDayIndex = 0; + INT16U userIndex = 1; + } + + request struct SetYearDayScheduleRequest { + INT8U yearDayIndex = 0; + INT16U userIndex = 1; + epoch_s localStartTime = 2; + epoch_s localEndTime = 3; + } + + request struct ClearYearDayScheduleRequest { + INT8U yearDayIndex = 0; + INT16U userIndex = 1; + } + + request struct SetHolidayScheduleRequest { + INT8U holidayIndex = 0; + epoch_s localStartTime = 1; + epoch_s localEndTime = 2; + OperatingModeEnum operatingMode = 3; + } + + request struct ClearHolidayScheduleRequest { + INT8U holidayIndex = 0; + } + + request struct SetUserRequest { + DataOperationTypeEnum operationType = 0; + INT16U userIndex = 1; + nullable CHAR_STRING userName = 2; + nullable INT32U userUniqueID = 3; + nullable UserStatusEnum userStatus = 4; + nullable UserTypeEnum userType = 5; + nullable CredentialRuleEnum credentialRule = 6; + } + + request struct ClearCredentialRequest { + nullable CredentialStruct credential = 0; + } + timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1; timed command UnlockWithTimeout(UnlockWithTimeoutRequest): DefaultSuccess = 3; + command access(invoke: administer) SetWeekDaySchedule(SetWeekDayScheduleRequest): DefaultSuccess = 11; + command access(invoke: administer) ClearWeekDaySchedule(ClearWeekDayScheduleRequest): DefaultSuccess = 13; + command access(invoke: administer) SetYearDaySchedule(SetYearDayScheduleRequest): DefaultSuccess = 14; + command access(invoke: administer) ClearYearDaySchedule(ClearYearDayScheduleRequest): DefaultSuccess = 16; + command access(invoke: administer) SetHolidaySchedule(SetHolidayScheduleRequest): DefaultSuccess = 17; + command access(invoke: administer) ClearHolidaySchedule(ClearHolidayScheduleRequest): DefaultSuccess = 19; + timed command access(invoke: administer) SetUser(SetUserRequest): DefaultSuccess = 26; + timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38; } /** Provides an interface for controlling and adjusting automatic window coverings. */ @@ -6589,20 +6698,21 @@ endpoint 0 { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute vendorName; - callback attribute vendorID; - callback attribute productName; + ram attribute vendorName; + ram attribute vendorID; + ram attribute productName; persist attribute nodeLabel; - callback attribute hardwareVersion; - callback attribute hardwareVersionString; - callback attribute softwareVersion; - callback attribute softwareVersionString; - callback attribute manufacturingDate; - callback attribute partNumber; - callback attribute productURL; - callback attribute productLabel; - callback attribute serialNumber; - callback attribute uniqueID; + ram attribute hardwareVersion default = 0; + ram attribute hardwareVersionString; + ram attribute softwareVersion default = 0; + ram attribute softwareVersionString; + ram attribute manufacturingDate default = "20210614123456ZZ"; + ram attribute partNumber; + ram attribute productURL; + ram attribute productLabel; + ram attribute serialNumber; + ram attribute reachable default = 1; + ram attribute uniqueID; callback attribute productAppearance; ram attribute featureMap default = 0; ram attribute clusterRevision default = 2; @@ -6663,42 +6773,42 @@ endpoint 0 { } server cluster DoorLock { - callback attribute lockState; - callback attribute lockType; + ram attribute lockState; + ram attribute lockType; ram attribute actuatorEnabled; - callback attribute doorState; - callback attribute doorOpenEvents; - callback attribute doorClosedEvents; - callback attribute openPeriod; - callback attribute numberOfTotalUsersSupported default = 0; - callback attribute numberOfPINUsersSupported default = 0; - callback attribute numberOfRFIDUsersSupported default = 0; - callback attribute numberOfWeekDaySchedulesSupportedPerUser default = 0; - callback attribute numberOfYearDaySchedulesSupportedPerUser default = 0; - callback attribute numberOfHolidaySchedulesSupported default = 0; - callback attribute maxPINCodeLength; - callback attribute minPINCodeLength; - callback attribute maxRFIDCodeLength; - callback attribute minRFIDCodeLength; - callback attribute credentialRulesSupport default = 1; - callback attribute numberOfCredentialsSupportedPerUser default = 0; - callback attribute language; - callback attribute LEDSettings default = 0; - callback attribute autoRelockTime; - callback attribute soundVolume default = 0; - callback attribute operatingMode default = 0; - callback attribute supportedOperatingModes default = 65526; - callback attribute defaultConfigurationRegister default = 0; - callback attribute enableLocalProgramming default = 1; - callback attribute enableOneTouchLocking default = 0; - callback attribute enableInsideStatusLED default = 0; - callback attribute enablePrivacyModeButton default = 0; - callback attribute localProgrammingFeatures default = 0; - callback attribute wrongCodeEntryLimit; - callback attribute userCodeTemporaryDisableTime; - callback attribute sendPINOverTheAir default = 0; - callback attribute requirePINforRemoteOperation default = 0; - callback attribute expiringUserTimeout; + ram attribute doorState; + ram attribute doorOpenEvents; + ram attribute doorClosedEvents; + ram attribute openPeriod; + ram attribute numberOfTotalUsersSupported default = 0; + ram attribute numberOfPINUsersSupported default = 0; + ram attribute numberOfRFIDUsersSupported default = 0; + ram attribute numberOfWeekDaySchedulesSupportedPerUser default = 0; + ram attribute numberOfYearDaySchedulesSupportedPerUser default = 0; + ram attribute numberOfHolidaySchedulesSupported default = 0; + ram attribute maxPINCodeLength; + ram attribute minPINCodeLength; + ram attribute maxRFIDCodeLength; + ram attribute minRFIDCodeLength; + ram attribute credentialRulesSupport default = 1; + ram attribute numberOfCredentialsSupportedPerUser default = 0; + ram attribute language; + ram attribute LEDSettings default = 0; + ram attribute autoRelockTime; + ram attribute soundVolume default = 0; + ram attribute operatingMode default = 0; + ram attribute supportedOperatingModes default = 65526; + ram attribute defaultConfigurationRegister default = 0; + ram attribute enableLocalProgramming default = 1; + ram attribute enableOneTouchLocking default = 0; + ram attribute enableInsideStatusLED default = 0; + ram attribute enablePrivacyModeButton default = 0; + ram attribute localProgrammingFeatures default = 0; + ram attribute wrongCodeEntryLimit; + ram attribute userCodeTemporaryDisableTime; + ram attribute sendPINOverTheAir default = 0; + ram attribute requirePINforRemoteOperation default = 0; + ram attribute expiringUserTimeout; ram attribute clusterRevision default = 6; } @@ -6961,6 +7071,7 @@ endpoint 0 { } endpoint 1 { device type anonymousEndpointType = 257, version 1; + binding cluster Identify; binding cluster OnOff; binding cluster LevelControl; binding cluster FixedLabel; @@ -7082,54 +7193,54 @@ endpoint 1 { server cluster ColorControl { ram attribute currentHue default = 0x00; ram attribute currentSaturation default = 0x00; - callback attribute remainingTime default = 0x00; + ram attribute remainingTime default = 0x00; ram attribute currentX default = 0x616B; ram attribute currentY default = 0x607D; - callback attribute driftCompensation; - callback attribute compensationText; + ram attribute driftCompensation; + ram attribute compensationText; ram attribute colorTemperatureMireds default = 0x00FA; - callback attribute colorMode default = 1; + ram attribute colorMode default = 1; ram attribute options default = 0x00; - callback attribute numberOfPrimaries; - callback attribute primary1X; - callback attribute primary1Y; - callback attribute primary1Intensity; - callback attribute primary2X; - callback attribute primary2Y; - callback attribute primary2Intensity; - callback attribute primary3X; - callback attribute primary3Y; - callback attribute primary3Intensity; - callback attribute primary4X; - callback attribute primary4Y; - callback attribute primary4Intensity; - callback attribute primary5X; - callback attribute primary5Y; - callback attribute primary5Intensity; - callback attribute primary6X; - callback attribute primary6Y; - callback attribute primary6Intensity; - callback attribute whitePointX; - callback attribute whitePointY; - callback attribute colorPointRX; - callback attribute colorPointRY; - callback attribute colorPointRIntensity; - callback attribute colorPointGX; - callback attribute colorPointGY; - callback attribute colorPointGIntensity; - callback attribute colorPointBX; - callback attribute colorPointBY; - callback attribute colorPointBIntensity; - callback attribute enhancedCurrentHue default = 0x00; - callback attribute enhancedColorMode default = 0x01; + ram attribute numberOfPrimaries; + ram attribute primary1X; + ram attribute primary1Y; + ram attribute primary1Intensity; + ram attribute primary2X; + ram attribute primary2Y; + ram attribute primary2Intensity; + ram attribute primary3X; + ram attribute primary3Y; + ram attribute primary3Intensity; + ram attribute primary4X; + ram attribute primary4Y; + ram attribute primary4Intensity; + ram attribute primary5X; + ram attribute primary5Y; + ram attribute primary5Intensity; + ram attribute primary6X; + ram attribute primary6Y; + ram attribute primary6Intensity; + ram attribute whitePointX; + ram attribute whitePointY; + ram attribute colorPointRX; + ram attribute colorPointRY; + ram attribute colorPointRIntensity; + ram attribute colorPointGX; + ram attribute colorPointGY; + ram attribute colorPointGIntensity; + ram attribute colorPointBX; + ram attribute colorPointBY; + ram attribute colorPointBIntensity; + ram attribute enhancedCurrentHue default = 0x00; + ram attribute enhancedColorMode default = 0x01; ram attribute colorLoopActive default = 0x00; ram attribute colorLoopDirection default = 0x00; ram attribute colorLoopTime default = 0x0019; ram attribute colorLoopStartEnhancedHue default = 0x2300; - callback attribute colorLoopStoredEnhancedHue default = 0x00; - callback attribute colorCapabilities default = 0x00; - callback attribute colorTempPhysicalMinMireds default = 0x00; - callback attribute colorTempPhysicalMaxMireds default = 0xfeff; + ram attribute colorLoopStoredEnhancedHue default = 0x00; + ram attribute colorCapabilities default = 0x00; + ram attribute colorTempPhysicalMinMireds default = 0x00; + ram attribute colorTempPhysicalMaxMireds default = 0xfeff; ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index 95b14378f1f477..f46be658e99f5f 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -4486,7 +4486,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4502,7 +4502,7 @@ "side": "server", "type": "vendor_id", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4518,7 +4518,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4550,10 +4550,10 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4566,7 +4566,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4582,10 +4582,10 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4598,7 +4598,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4614,10 +4614,10 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "20210614123456ZZ", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4630,7 +4630,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4646,7 +4646,7 @@ "side": "server", "type": "long_char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4662,7 +4662,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4678,7 +4678,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4693,11 +4693,11 @@ "mfgCode": null, "side": "server", "type": "boolean", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4710,7 +4710,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -4731,7 +4731,7 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, + "minInterval": 1, "maxInterval": 65344, "reportableChange": 0 }, @@ -5766,7 +5766,7 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 }, { "name": "UnlockDoor", @@ -5774,7 +5774,7 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 }, { "name": "UnlockWithTimeout", @@ -5782,7 +5782,127 @@ "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 0 + "outgoing": 1 + }, + { + "name": "SetWeekDaySchedule", + "code": 11, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetWeekDaySchedule", + "code": 12, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearWeekDaySchedule", + "code": 13, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetYearDaySchedule", + "code": 14, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetYearDaySchedule", + "code": 15, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearYearDaySchedule", + "code": 16, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetHolidayDaySchedule", + "code": 17, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetHolidayDaySchedule", + "code": 18, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CleartHolidayDaySchedule", + "code": 19, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetUser", + "code": 26, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "GetUser", + "code": 27, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearUser", + "code": 28, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetCredential", + "code": 34, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "GetCredentialStatus", + "code": 36, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearCredential", + "code": 38, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 } ], "attributes": [ @@ -5811,6 +5931,56 @@ "define": "DOOR_LOCK_CLUSTER", "side": "server", "enabled": 1, + "commands": [ + { + "name": "GetWeekDayScheduleResponse", + "code": 12, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetYearDayScheduleResponse", + "code": 15, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetHolidayScheduleResponse", + "code": 18, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetUserResponse", + "code": 27, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "SetCredentialResponse", + "code": 35, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetCredentialStatusResponse", + "code": 37, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { "name": "LockState", @@ -5819,7 +5989,7 @@ "side": "server", "type": "DlLockState", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5835,7 +6005,7 @@ "side": "server", "type": "DlLockType", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5867,7 +6037,7 @@ "side": "server", "type": "DoorStateEnum", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5883,7 +6053,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5899,7 +6069,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5915,7 +6085,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5931,7 +6101,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5947,7 +6117,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5963,7 +6133,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5979,7 +6149,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -5995,7 +6165,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6011,7 +6181,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6027,7 +6197,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6043,7 +6213,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6059,7 +6229,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6075,7 +6245,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6091,7 +6261,7 @@ "side": "server", "type": "DlCredentialRuleMask", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "1", @@ -6107,7 +6277,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6123,7 +6293,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6139,7 +6309,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6155,7 +6325,7 @@ "side": "server", "type": "int32u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6171,7 +6341,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6187,7 +6357,7 @@ "side": "server", "type": "OperatingModeEnum", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6203,7 +6373,7 @@ "side": "server", "type": "DlSupportedOperatingModes", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "65526", @@ -6219,7 +6389,7 @@ "side": "server", "type": "DlDefaultConfigurationRegister", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6235,7 +6405,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "1", @@ -6251,7 +6421,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6267,7 +6437,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6283,7 +6453,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6299,7 +6469,7 @@ "side": "server", "type": "DlLocalProgrammingFeatures", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6315,7 +6485,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6331,7 +6501,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6347,7 +6517,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6363,7 +6533,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -6379,7 +6549,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10866,7 +11036,7 @@ "mfgCode": null, "define": "IDENTIFY_CLUSTER", "side": "client", - "enabled": 0, + "enabled": 1, "commands": [ { "name": "Identify", @@ -13269,7 +13439,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -13317,7 +13487,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13333,7 +13503,7 @@ "side": "server", "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13365,7 +13535,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 1, "bounded": 0, "defaultValue": "1", @@ -13397,7 +13567,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13413,7 +13583,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13429,7 +13599,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13445,7 +13615,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13461,7 +13631,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13477,7 +13647,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13493,7 +13663,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13509,7 +13679,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13525,7 +13695,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13541,7 +13711,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13557,7 +13727,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13573,7 +13743,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13589,7 +13759,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13605,7 +13775,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13621,7 +13791,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13637,7 +13807,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13653,7 +13823,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13669,7 +13839,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13685,7 +13855,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13701,7 +13871,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13717,7 +13887,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13733,7 +13903,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13749,7 +13919,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13765,7 +13935,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13781,7 +13951,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13797,7 +13967,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13813,7 +13983,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13829,7 +13999,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13845,7 +14015,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13861,7 +14031,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13877,7 +14047,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -13893,7 +14063,7 @@ "side": "server", "type": "enum8", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x01", @@ -13973,7 +14143,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -13989,7 +14159,7 @@ "side": "server", "type": "bitmap16", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -14005,7 +14175,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -14021,7 +14191,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0xfeff", diff --git a/scripts/tests/chiptest/__init__.py b/scripts/tests/chiptest/__init__.py index 945d5ddbb39019..b493c4c9d56371 100644 --- a/scripts/tests/chiptest/__init__.py +++ b/scripts/tests/chiptest/__init__.py @@ -137,6 +137,7 @@ def _GetInDevelopmentTests() -> Set[str]: "TestAttributesById.yaml", # chip-repl does not support AnyCommands (06/06/2023) "TestCommandsById.yaml", # chip-repl does not support AnyCommands (06/06/2023) "TestEventsById.yaml", # chip-repl does not support AnyCommands (06/06/2023) + "Test_TC_DRLK_2_8.yaml", # Test fails only in chip-repl: Refer--> https://github.com/project-chip/connectedhomeip/pull/27011#issuecomment-1593339855 } diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index 4c45ae86d767c6..c7948d14eb96b3 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -1034,6 +1034,9 @@ PICS: - label: "Does the DUT(server) support the CapabilityMinima attribute?" id: BRBINFO.S.A0013 + - label: "Does the DUT(server) support the ProductAppearance attribute?" + id: BRBINFO.S.A0014 + # # server / Events # @@ -1152,6 +1155,11 @@ PICS: attribute implemented on server?" id: BRBINFO.C.A0013 + - label: + "Does the DUT(client) have access privileges for the ProductAppearance + attribute implemented on server?" + id: BRBINFO.C.A0014 + # # client / Events # @@ -1954,6 +1962,10 @@ PICS: - label: "Does the DUT(server) support the CapabilityMinima attribute?" id: BINFO.S.A0013 + - label: "Does the DUT(server) support the ProductAppearance attribute?" + id: BINFO.S.A0014 + + ##### - label: "Does the DUT(server) support the NOC list attribute?" id: OPCREDS.S.A0000 @@ -1973,6 +1985,7 @@ PICS: - label: "Does the DUT(server) support the CurrentFabricIndex attribute?" id: OPCREDS.S.A0005 + ######### - label: "Does the DUT(Server) support MaxNetworks attribute?" id: CNET.S.A0000 @@ -5249,6 +5262,11 @@ PICS: on the same DUT?" id: MOD.S.F00 + - label: + "Does the device implement receiving the ChangeToModeWithStatus + command?" + id: MOD.S.C01.Rsp + # # client / attributes # diff --git a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_2.yaml b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_2.yaml index 9b07e5dd174193..08b4db7f5b6f26 100644 --- a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_2.yaml @@ -34,7 +34,7 @@ tests: - name: "nodeId" value: nodeId - - label: "Reads the OutputList attribute from the DUT" + - label: "TH reads the OutputList attribute from the DUT" PICS: AUDIOOUTPUT.S.A0000 command: "readAttribute" attribute: "OutputList" @@ -43,7 +43,9 @@ tests: constraints: type: list - - label: "Sends a RenameOutput command" + - label: + "TH sends a RenameOutput command to the DUT with an index from the + list in step 1 and the name 'CertTest'" PICS: AUDIOOUTPUT.S.C01.Rsp command: "RenameOutput" arguments: @@ -55,8 +57,8 @@ tests: #Disabled due to issue- #13029 - label: - "Reads the OutputList attribute from the DUT Verify that the output at - the index provided in step 2 has the name CertTest" + "TH reads the OutputList attribute from the DUT. Verify that the + output at the index provided in step 2 has the name CertTest" verification: | ./chip-tool audiooutput read output-list 1 1 [1651061821.366426][156898:156903] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_050B Attribute 0x0000_0000 DataVersion: 372822880 diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml index d38c6794224acf..89f0f904147758 100644 --- a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml @@ -689,3 +689,28 @@ tests: attribute: "CapabilityMinima" response: value: CapabilityMinimaValue + + - label: "TH reads ProductAppearance from the DUT." + PICS: BINFO.S.A0014 + command: "readAttribute" + attribute: "ProductAppearance" + response: + saveAs: ProductAppearancevalue + constraints: + type: ProductAppearanceStruct + + - label: "TH writes ProductAppearance to the DUT." + PICS: BINFO.S.A0014 + command: "writeAttribute" + attribute: "ProductAppearance" + arguments: + value: { "Finish": 3, "PrimaryColor": 4 } + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ProductAppearance attribute from the DUT." + PICS: BINFO.S.A0014 + command: "readAttribute" + attribute: "ProductAppearance" + response: + value: ProductAppearancevalue diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml index eab05599ed5d52..def10ed20f81a3 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml @@ -167,9 +167,10 @@ tests: ./chip-tool bridgeddevicebasicinformation read node-label 1 3 Verify the value of node-label is type of string and contains length between 0 and 32 in TH(chip-tool) Log: + Note: If the write access is implemented then the value of the of the Nodelabel will be changed into "newnode" [1657696463.081741][15476:15481] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 2577979325 - [1657696463.081791][15476:15481] CHIP:TOO: NodeLabel: newnode + [1657696463.081791][15476:15481] CHIP:TOO: NodeLabel: Light 1 cluster: "LogCommands" command: "UserPrompt" arguments: @@ -509,3 +510,28 @@ tests: attribute: "UniqueID" response: value: UniqueIDValue + + - label: "TH reads ProductAppearance from the DUT." + PICS: BRBINFO.S.A0014 + command: "readAttribute" + attribute: "ProductAppearance" + response: + saveAs: ProductAppearancevalue + constraints: + type: ProductAppearanceStruct + + - label: "TH writes ProductAppearance to the DUT." + PICS: BRBINFO.S.A0014 + command: "writeAttribute" + attribute: "ProductAppearance" + arguments: + value: { "Finish": 3, "PrimaryColor": 4 } + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ProductAppearance attribute from the DUT." + PICS: BRBINFO.S.A0014 + command: "readAttribute" + attribute: "ProductAppearance" + response: + value: ProductAppearancevalue diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml deleted file mode 100644 index 996f47cf309a10..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml +++ /dev/null @@ -1,1973 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 3.1.3. [TC-CC-2.2] Attributes with client as DUT - -PICS: - - CC.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - - Commission TH(all-clusters-app) to TH(chip-tool) using below command - - TH(all-clusters-app) : sudo ./chip-all-clusters-app --trace_decode 1 - TH(chip-tool) : ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1 - disabled: true - - - label: "Commission TH to DUT" - verification: | - - disabled: true - - - label: "DUT reads from the TH the (0x0000) CurrentHue attribute" - PICS: CC.C.A0000 - verification: | - ./chip-tool colorcontrol read current-hue 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862430.291431][25129:25129] CHIP:DMG: { - [1666862430.291434][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862430.291439][25129:25129] CHIP:DMG: [ - [1666862430.291442][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862430.291446][25129:25129] CHIP:DMG: { - [1666862430.291450][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862430.291453][25129:25129] CHIP:DMG: { - [1666862430.291459][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862430.291462][25129:25129] CHIP:DMG: AttributePathIB = - [1666862430.291467][25129:25129] CHIP:DMG: { - [1666862430.291472][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862430.291477][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862430.291483][25129:25129] CHIP:DMG: Attribute = 0x0000_0000, - [1666862430.291487][25129:25129] CHIP:DMG: } - [1666862430.291494][25129:25129] CHIP:DMG: - [1666862430.291499][25129:25129] CHIP:DMG: Data = 0, - [1666862430.291503][25129:25129] CHIP:DMG: }, - [1666862430.291509][25129:25129] CHIP:DMG: - [1666862430.291513][25129:25129] CHIP:DMG: }, - [1666862430.291518][25129:25129] CHIP:DMG: - [1666862430.291520][25129:25129] CHIP:DMG: ], - [1666862430.291526][25129:25129] CHIP:DMG: - [1666862430.291530][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862430.291534][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862430.291537][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0001) CurrentSaturation attribute" - PICS: CC.C.A0001 - verification: | - ./chip-tool colorcontrol read current-saturation 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862500.428470][25129:25129] CHIP:DMG: { - [1666862500.428473][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862500.428478][25129:25129] CHIP:DMG: [ - [1666862500.428481][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862500.428485][25129:25129] CHIP:DMG: { - [1666862500.428488][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862500.428492][25129:25129] CHIP:DMG: { - [1666862500.428495][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862500.428498][25129:25129] CHIP:DMG: AttributePathIB = - [1666862500.428501][25129:25129] CHIP:DMG: { - [1666862500.428505][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862500.428509][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862500.428513][25129:25129] CHIP:DMG: Attribute = 0x0000_0001, - [1666862500.428516][25129:25129] CHIP:DMG: } - [1666862500.428520][25129:25129] CHIP:DMG: - [1666862500.428524][25129:25129] CHIP:DMG: Data = 0, - [1666862500.428526][25129:25129] CHIP:DMG: }, - [1666862500.428531][25129:25129] CHIP:DMG: - [1666862500.428535][25129:25129] CHIP:DMG: }, - [1666862500.428539][25129:25129] CHIP:DMG: - [1666862500.428541][25129:25129] CHIP:DMG: ], - [1666862500.428546][25129:25129] CHIP:DMG: - [1666862500.428549][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862500.428552][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862500.428556][25129:25129] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0002) RemainingTime attribute" - PICS: CC.C.A0002 - verification: | - ./chip-tool colorcontrol read remaining-time 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862536.301497][25129:25129] CHIP:DMG: { - [1666862536.301500][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862536.301505][25129:25129] CHIP:DMG: [ - [1666862536.301508][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862536.301513][25129:25129] CHIP:DMG: { - [1666862536.301516][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862536.301520][25129:25129] CHIP:DMG: { - [1666862536.301524][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862536.301528][25129:25129] CHIP:DMG: AttributePathIB = - [1666862536.301532][25129:25129] CHIP:DMG: { - [1666862536.301537][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862536.301540][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862536.301545][25129:25129] CHIP:DMG: Attribute = 0x0000_0002, - [1666862536.301548][25129:25129] CHIP:DMG: } - [1666862536.301553][25129:25129] CHIP:DMG: - [1666862536.301557][25129:25129] CHIP:DMG: Data = 0, - [1666862536.301560][25129:25129] CHIP:DMG: }, - [1666862536.301565][25129:25129] CHIP:DMG: - [1666862536.301567][25129:25129] CHIP:DMG: }, - [1666862536.301571][25129:25129] CHIP:DMG: - [1666862536.301574][25129:25129] CHIP:DMG: ], - [1666862536.301579][25129:25129] CHIP:DMG: - [1666862536.301582][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862536.301586][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862536.301588][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0003) CurrentX attribute" - PICS: CC.C.A0003 - verification: | - ./chip-tool colorcontrol read current-x 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - [ReportDataMessage = - [1666862572.154251][25129:25129] CHIP:DMG: { - [1666862572.154254][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862572.154261][25129:25129] CHIP:DMG: [ - [1666862572.154266][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862572.154273][25129:25129] CHIP:DMG: { - [1666862572.154276][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862572.154282][25129:25129] CHIP:DMG: { - [1666862572.154286][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862572.154291][25129:25129] CHIP:DMG: AttributePathIB = - [1666862572.154295][25129:25129] CHIP:DMG: { - [1666862572.154300][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862572.154305][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862572.154310][25129:25129] CHIP:DMG: Attribute = 0x0000_0003, - [1666862572.154315][25129:25129] CHIP:DMG: } - [1666862572.154321][25129:25129] CHIP:DMG: - [1666862572.154326][25129:25129] CHIP:DMG: Data = 24939, - [1666862572.154330][25129:25129] CHIP:DMG: }, - [1666862572.154336][25129:25129] CHIP:DMG: - [1666862572.154341][25129:25129] CHIP:DMG: }, - [1666862572.154347][25129:25129] CHIP:DMG: - [1666862572.154351][25129:25129] CHIP:DMG: ], - [1666862572.154358][25129:25129] CHIP:DMG: - [1666862572.154363][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862572.154368][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862572.154371][25129:25129] CHIP:DMG: } - [1666862572.154375][25129:25129] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x0004) CurrentY attribute" - PICS: CC.C.A0004 - verification: | - ./chip-tool colorcontrol read current-y 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862605.149051][25129:25129] CHIP:DMG: { - [1666862605.149054][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862605.149059][25129:25129] CHIP:DMG: [ - [1666862605.149061][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862605.149066][25129:25129] CHIP:DMG: { - [1666862605.149069][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862605.149073][25129:25129] CHIP:DMG: { - [1666862605.149078][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862605.149083][25129:25129] CHIP:DMG: AttributePathIB = - [1666862605.149089][25129:25129] CHIP:DMG: { - [1666862605.149093][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862605.149096][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862605.149100][25129:25129] CHIP:DMG: Attribute = 0x0000_0004, - [1666862605.149105][25129:25129] CHIP:DMG: } - [1666862605.149110][25129:25129] CHIP:DMG: - [1666862605.149114][25129:25129] CHIP:DMG: Data = 24701, - [1666862605.149117][25129:25129] CHIP:DMG: }, - [1666862605.149122][25129:25129] CHIP:DMG: - [1666862605.149126][25129:25129] CHIP:DMG: }, - [1666862605.149133][25129:25129] CHIP:DMG: - [1666862605.149136][25129:25129] CHIP:DMG: ], - [1666862605.149143][25129:25129] CHIP:DMG: - [1666862605.149147][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862605.149152][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862605.149155][25129:25129] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0005) DriftCompensation - attribute" - PICS: CC.C.A0005 - verification: | - ./chip-tool colorcontrol read drift-compensation 1 1 - - Verify response contains an enum8 [Min:0 Max:4] in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862633.459394][25129:25129] CHIP:DMG: { - [1666862633.459398][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862633.459403][25129:25129] CHIP:DMG: [ - [1666862633.459406][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862633.459410][25129:25129] CHIP:DMG: { - [1666862633.459414][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862633.459418][25129:25129] CHIP:DMG: { - [1666862633.459421][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862633.459424][25129:25129] CHIP:DMG: AttributePathIB = - [1666862633.459427][25129:25129] CHIP:DMG: { - [1666862633.459431][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862633.459436][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862633.459440][25129:25129] CHIP:DMG: Attribute = 0x0000_0005, - [1666862633.459443][25129:25129] CHIP:DMG: } - [1666862633.459448][25129:25129] CHIP:DMG: - [1666862633.459452][25129:25129] CHIP:DMG: Data = 0, - [1666862633.459454][25129:25129] CHIP:DMG: }, - [1666862633.459459][25129:25129] CHIP:DMG: - [1666862633.459462][25129:25129] CHIP:DMG: }, - [1666862633.459466][25129:25129] CHIP:DMG: - [1666862633.459468][25129:25129] CHIP:DMG: ], - [1666862633.459473][25129:25129] CHIP:DMG: - [1666862633.459477][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862633.459480][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862633.459483][25129:25129] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0006) CompensationText - attribute" - PICS: CC.C.A0006 - verification: | - ./chip-tool colorcontrol read compensation-text 1 1 - - - Verify response contains a string [Max:254] in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862660.413111][25129:25129] CHIP:DMG: { - [1666862660.413114][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862660.413121][25129:25129] CHIP:DMG: [ - [1666862660.413125][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862660.413132][25129:25129] CHIP:DMG: { - [1666862660.413135][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862660.413140][25129:25129] CHIP:DMG: { - [1666862660.413146][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862660.413151][25129:25129] CHIP:DMG: AttributePathIB = - [1666862660.413156][25129:25129] CHIP:DMG: { - [1666862660.413160][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862660.413165][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862660.413171][25129:25129] CHIP:DMG: Attribute = 0x0000_0006, - [1666862660.413175][25129:25129] CHIP:DMG: } - [1666862660.413180][25129:25129] CHIP:DMG: - [1666862660.413187][25129:25129] CHIP:DMG: Data = "" (0 chars), - [1666862660.413191][25129:25129] CHIP:DMG: }, - [1666862660.413196][25129:25129] CHIP:DMG: - [1666862660.413199][25129:25129] CHIP:DMG: }, - [1666862660.413205][25129:25129] CHIP:DMG: - [1666862660.413207][25129:25129] CHIP:DMG: ], - [1666862660.413214][25129:25129] CHIP:DMG: - [1666862660.413219][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862660.413223][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862660.413226][25129:25129] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute" - PICS: CC.C.A0007 - verification: | - ./chip-tool colorcontrol read color-temperature-mireds 1 1 - - Verify response contains an uint16 [Min:0 Max:0xfeff] in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862691.348062][25129:25129] CHIP:DMG: { - [1666862691.348064][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862691.348069][25129:25129] CHIP:DMG: [ - [1666862691.348073][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862691.348078][25129:25129] CHIP:DMG: { - [1666862691.348081][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862691.348085][25129:25129] CHIP:DMG: { - [1666862691.348088][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862691.348092][25129:25129] CHIP:DMG: AttributePathIB = - [1666862691.348096][25129:25129] CHIP:DMG: { - [1666862691.348099][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862691.348104][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862691.348109][25129:25129] CHIP:DMG: Attribute = 0x0000_0007, - [1666862691.348112][25129:25129] CHIP:DMG: } - [1666862691.348116][25129:25129] CHIP:DMG: - [1666862691.348121][25129:25129] CHIP:DMG: Data = 0, - [1666862691.348124][25129:25129] CHIP:DMG: }, - [1666862691.348128][25129:25129] CHIP:DMG: - [1666862691.348131][25129:25129] CHIP:DMG: }, - [1666862691.348135][25129:25129] CHIP:DMG: - [1666862691.348138][25129:25129] CHIP:DMG: ], - [1666862691.348142][25129:25129] CHIP:DMG: - [1666862691.348146][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862691.348149][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862691.348152][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0008) ColorMode attribute" - PICS: CC.C.A0008 - verification: | - ./chip-tool colorcontrol read color-mode 1 1 - - - Verify response contains an enum8 [Min:0 Max:2] in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862714.451872][25129:25129] CHIP:DMG: { - [1666862714.451875][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862714.451880][25129:25129] CHIP:DMG: [ - [1666862714.451883][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862714.451889][25129:25129] CHIP:DMG: { - [1666862714.451892][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862714.451897][25129:25129] CHIP:DMG: { - [1666862714.451900][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862714.451904][25129:25129] CHIP:DMG: AttributePathIB = - [1666862714.451908][25129:25129] CHIP:DMG: { - [1666862714.451911][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862714.451915][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862714.451919][25129:25129] CHIP:DMG: Attribute = 0x0000_0008, - [1666862714.451922][25129:25129] CHIP:DMG: } - [1666862714.451926][25129:25129] CHIP:DMG: - [1666862714.451931][25129:25129] CHIP:DMG: Data = 2, - [1666862714.451935][25129:25129] CHIP:DMG: }, - [1666862714.451939][25129:25129] CHIP:DMG: - [1666862714.451942][25129:25129] CHIP:DMG: }, - [1666862714.451948][25129:25129] CHIP:DMG: - [1666862714.451950][25129:25129] CHIP:DMG: ], - [1666862714.451955][25129:25129] CHIP:DMG: - [1666862714.451959][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862714.451961][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862714.451964][25129:25129] CHIP:DMG: } - [1666862714.451966][25129:25129] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x000f) Options attribute" - PICS: CC.C.A000f - verification: | - ./chip-tool colorcontrol read options 1 1 - - - Verify response contains a bitmap8(0,1,2,3,4) in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862742.001653][25129:25129] CHIP:DMG: { - [1666862742.001655][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862742.001664][25129:25129] CHIP:DMG: [ - [1666862742.001672][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862742.001678][25129:25129] CHIP:DMG: { - [1666862742.001681][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862742.001684][25129:25129] CHIP:DMG: { - [1666862742.001687][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862742.001691][25129:25129] CHIP:DMG: AttributePathIB = - [1666862742.001694][25129:25129] CHIP:DMG: { - [1666862742.001698][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862742.001702][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862742.001706][25129:25129] CHIP:DMG: Attribute = 0x0000_000F, - [1666862742.001710][25129:25129] CHIP:DMG: } - [1666862742.001714][25129:25129] CHIP:DMG: - [1666862742.001718][25129:25129] CHIP:DMG: Data = 0, - [1666862742.001722][25129:25129] CHIP:DMG: }, - [1666862742.001727][25129:25129] CHIP:DMG: - [1666862742.001731][25129:25129] CHIP:DMG: }, - [1666862742.001736][25129:25129] CHIP:DMG: - [1666862742.001738][25129:25129] CHIP:DMG: ], - [1666862742.001743][25129:25129] CHIP:DMG: - [1666862742.001747][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862742.001750][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862742.001752][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute" - PICS: CC.C.A4000 - verification: | - ./chip-tool colorcontrol read enhanced-current-hue 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862783.156918][25129:25129] CHIP:DMG: { - [1666862783.156921][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862783.156926][25129:25129] CHIP:DMG: [ - [1666862783.156929][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862783.156934][25129:25129] CHIP:DMG: { - [1666862783.156937][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862783.156942][25129:25129] CHIP:DMG: { - [1666862783.156945][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862783.156951][25129:25129] CHIP:DMG: AttributePathIB = - [1666862783.156955][25129:25129] CHIP:DMG: { - [1666862783.156959][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862783.156963][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862783.156969][25129:25129] CHIP:DMG: Attribute = 0x0000_4000, - [1666862783.156972][25129:25129] CHIP:DMG: } - [1666862783.156977][25129:25129] CHIP:DMG: - [1666862783.156981][25129:25129] CHIP:DMG: Data = 0, - [1666862783.156984][25129:25129] CHIP:DMG: }, - [1666862783.156989][25129:25129] CHIP:DMG: - [1666862783.156992][25129:25129] CHIP:DMG: }, - [1666862783.156996][25129:25129] CHIP:DMG: - [1666862783.156999][25129:25129] CHIP:DMG: ], - [1666862783.157003][25129:25129] CHIP:DMG: - [1666862783.157007][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862783.157009][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862783.157012][25129:25129] CHIP:DMG: } - [1666862783.157014][25129:25129] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x4001) EnhancedColorMode attribute" - PICS: CC.C.A4001 - verification: | - ./chip-tool colorcontrol read enhanced-color-mode 1 1 - - - Verify response contains an enum8 (0, 1, 2, 3) in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862808.027159][25129:25129] CHIP:DMG: { - [1666862808.027162][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862808.027169][25129:25129] CHIP:DMG: [ - [1666862808.027173][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862808.027180][25129:25129] CHIP:DMG: { - [1666862808.027184][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862808.027190][25129:25129] CHIP:DMG: { - [1666862808.027194][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862808.027199][25129:25129] CHIP:DMG: AttributePathIB = - [1666862808.027204][25129:25129] CHIP:DMG: { - [1666862808.027208][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862808.027214][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862808.027219][25129:25129] CHIP:DMG: Attribute = 0x0000_4001, - [1666862808.027223][25129:25129] CHIP:DMG: } - [1666862808.027235][25129:25129] CHIP:DMG: - [1666862808.027240][25129:25129] CHIP:DMG: Data = 2, - [1666862808.027242][25129:25129] CHIP:DMG: }, - [1666862808.027247][25129:25129] CHIP:DMG: - [1666862808.027251][25129:25129] CHIP:DMG: }, - [1666862808.027257][25129:25129] CHIP:DMG: - [1666862808.027260][25129:25129] CHIP:DMG: ], - [1666862808.027264][25129:25129] CHIP:DMG: - [1666862808.027268][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862808.027271][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862808.027274][25129:25129] CHIP:DMG: } - [1666862808.027276][25129:25129] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x4002) ColorLoopActive attribute" - PICS: CC.C.A4002 - verification: | - ./chip-tool colorcontrol read color-loop-active 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862834.193580][25129:25129] CHIP:DMG: { - [1666862834.193582][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862834.193586][25129:25129] CHIP:DMG: [ - [1666862834.193589][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862834.193595][25129:25129] CHIP:DMG: { - [1666862834.193598][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862834.193601][25129:25129] CHIP:DMG: { - [1666862834.193605][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862834.193608][25129:25129] CHIP:DMG: AttributePathIB = - [1666862834.193611][25129:25129] CHIP:DMG: { - [1666862834.193615][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862834.193618][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862834.193623][25129:25129] CHIP:DMG: Attribute = 0x0000_4002, - [1666862834.193626][25129:25129] CHIP:DMG: } - [1666862834.193630][25129:25129] CHIP:DMG: - [1666862834.193634][25129:25129] CHIP:DMG: Data = 0, - [1666862834.193637][25129:25129] CHIP:DMG: }, - [1666862834.193641][25129:25129] CHIP:DMG: - [1666862834.193644][25129:25129] CHIP:DMG: }, - [1666862834.193649][25129:25129] CHIP:DMG: - [1666862834.193651][25129:25129] CHIP:DMG: ], - [1666862834.193656][25129:25129] CHIP:DMG: - [1666862834.193659][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862834.193662][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862834.193664][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x4003) ColorLoopDirection attribute" - PICS: CC.C.A4003 - verification: | - ./chip-tool colorcontrol read color-loop-direction 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862856.253192][25129:25129] CHIP:DMG: { - [1666862856.253194][25129:25129] CHIP:DMG: AttributeReportIBs = - [1666862856.253199][25129:25129] CHIP:DMG: [ - [1666862856.253202][25129:25129] CHIP:DMG: AttributeReportIB = - [1666862856.253207][25129:25129] CHIP:DMG: { - [1666862856.253210][25129:25129] CHIP:DMG: AttributeDataIB = - [1666862856.253213][25129:25129] CHIP:DMG: { - [1666862856.253216][25129:25129] CHIP:DMG: DataVersion = 0xeff75486, - [1666862856.253219][25129:25129] CHIP:DMG: AttributePathIB = - [1666862856.253222][25129:25129] CHIP:DMG: { - [1666862856.253226][25129:25129] CHIP:DMG: Endpoint = 0x1, - [1666862856.253230][25129:25129] CHIP:DMG: Cluster = 0x300, - [1666862856.253233][25129:25129] CHIP:DMG: Attribute = 0x0000_4003, - [1666862856.253237][25129:25129] CHIP:DMG: } - [1666862856.253241][25129:25129] CHIP:DMG: - [1666862856.253246][25129:25129] CHIP:DMG: Data = 0, - [1666862856.253249][25129:25129] CHIP:DMG: }, - [1666862856.253252][25129:25129] CHIP:DMG: - [1666862856.253255][25129:25129] CHIP:DMG: }, - [1666862856.253259][25129:25129] CHIP:DMG: - [1666862856.253262][25129:25129] CHIP:DMG: ], - [1666862856.253267][25129:25129] CHIP:DMG: - [1666862856.253270][25129:25129] CHIP:DMG: SuppressResponse = true, - [1666862856.253273][25129:25129] CHIP:DMG: InteractionModelRevision = 1 - [1666862856.253276][25129:25129] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x4004) ColorLoopTime attribute" - PICS: CC.C.A4004 - verification: | - ./chip-tool colorcontrol read color-loop-time 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862943.614989][25380:25380] CHIP:DMG: { - [1666862943.614992][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666862943.614997][25380:25380] CHIP:DMG: [ - [1666862943.615000][25380:25380] CHIP:DMG: AttributeReportIB = - [1666862943.615004][25380:25380] CHIP:DMG: { - [1666862943.615007][25380:25380] CHIP:DMG: AttributeDataIB = - [1666862943.615011][25380:25380] CHIP:DMG: { - [1666862943.615014][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666862943.615017][25380:25380] CHIP:DMG: AttributePathIB = - [1666862943.615021][25380:25380] CHIP:DMG: { - [1666862943.615024][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666862943.615028][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666862943.615031][25380:25380] CHIP:DMG: Attribute = 0x0000_4004, - [1666862943.615035][25380:25380] CHIP:DMG: } - [1666862943.615039][25380:25380] CHIP:DMG: - [1666862943.615043][25380:25380] CHIP:DMG: Data = 25, - [1666862943.615046][25380:25380] CHIP:DMG: }, - [1666862943.615051][25380:25380] CHIP:DMG: - [1666862943.615054][25380:25380] CHIP:DMG: }, - [1666862943.615058][25380:25380] CHIP:DMG: - [1666862943.615061][25380:25380] CHIP:DMG: ], - [1666862943.615065][25380:25380] CHIP:DMG: - [1666862943.615067][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666862943.615071][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666862943.615073][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue - attribute" - PICS: CC.C.A4005 - verification: | - ./chip-tool colorcontrol read color-loop-start-enhanced-hue 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666862967.033733][25380:25380] CHIP:DMG: { - [1666862967.033735][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666862967.033741][25380:25380] CHIP:DMG: [ - [1666862967.033743][25380:25380] CHIP:DMG: AttributeReportIB = - [1666862967.033749][25380:25380] CHIP:DMG: { - [1666862967.033752][25380:25380] CHIP:DMG: AttributeDataIB = - [1666862967.033756][25380:25380] CHIP:DMG: { - [1666862967.033760][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666862967.033762][25380:25380] CHIP:DMG: AttributePathIB = - [1666862967.033766][25380:25380] CHIP:DMG: { - [1666862967.033770][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666862967.033774][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666862967.033777][25380:25380] CHIP:DMG: Attribute = 0x0000_4005, - [1666862967.033781][25380:25380] CHIP:DMG: } - [1666862967.033785][25380:25380] CHIP:DMG: - [1666862967.033789][25380:25380] CHIP:DMG: Data = 8960, - [1666862967.033793][25380:25380] CHIP:DMG: }, - [1666862967.033798][25380:25380] CHIP:DMG: - [1666862967.033802][25380:25380] CHIP:DMG: }, - [1666862967.033807][25380:25380] CHIP:DMG: - [1666862967.033809][25380:25380] CHIP:DMG: ], - [1666862967.033815][25380:25380] CHIP:DMG: - [1666862967.033819][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666862967.033822][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666862967.033825][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue - attribute" - PICS: CC.C.A4006 - verification: | - ./chip-tool colorcontrol read color-loop-stored-enhanced-hue 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666862998.392537][25380:25380] CHIP:DMG: { - [1666862998.392540][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666862998.392547][25380:25380] CHIP:DMG: [ - [1666862998.392551][25380:25380] CHIP:DMG: AttributeReportIB = - [1666862998.392559][25380:25380] CHIP:DMG: { - [1666862998.392564][25380:25380] CHIP:DMG: AttributeDataIB = - [1666862998.392570][25380:25380] CHIP:DMG: { - [1666862998.392574][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666862998.392579][25380:25380] CHIP:DMG: AttributePathIB = - [1666862998.392583][25380:25380] CHIP:DMG: { - [1666862998.392588][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666862998.392592][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666862998.392598][25380:25380] CHIP:DMG: Attribute = 0x0000_4006, - [1666862998.392603][25380:25380] CHIP:DMG: } - [1666862998.392608][25380:25380] CHIP:DMG: - [1666862998.392613][25380:25380] CHIP:DMG: Data = 0, - [1666862998.392617][25380:25380] CHIP:DMG: }, - [1666862998.392623][25380:25380] CHIP:DMG: - [1666862998.392627][25380:25380] CHIP:DMG: }, - [1666862998.392635][25380:25380] CHIP:DMG: - [1666862998.392638][25380:25380] CHIP:DMG: ], - [1666862998.392645][25380:25380] CHIP:DMG: - [1666862998.392650][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666862998.392654][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666862998.392657][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x400a) ColorCapabilities attribute" - PICS: CC.C.A400a - verification: | - ./chip-tool colorcontrol read color-capabilities 1 1 - - - Verify response contains an map16 [Min:0 Max:0x001f] in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863021.121978][25380:25380] CHIP:DMG: { - [1666863021.121981][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863021.121986][25380:25380] CHIP:DMG: [ - [1666863021.121988][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863021.121993][25380:25380] CHIP:DMG: { - [1666863021.121996][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863021.121999][25380:25380] CHIP:DMG: { - [1666863021.122003][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863021.122006][25380:25380] CHIP:DMG: AttributePathIB = - [1666863021.122010][25380:25380] CHIP:DMG: { - [1666863021.122014][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863021.122019][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863021.122025][25380:25380] CHIP:DMG: Attribute = 0x0000_400A, - [1666863021.122030][25380:25380] CHIP:DMG: } - [1666863021.122036][25380:25380] CHIP:DMG: - [1666863021.122041][25380:25380] CHIP:DMG: Data = 31, - [1666863021.122045][25380:25380] CHIP:DMG: }, - [1666863021.122051][25380:25380] CHIP:DMG: - [1666863021.122055][25380:25380] CHIP:DMG: }, - [1666863021.122061][25380:25380] CHIP:DMG: - [1666863021.122064][25380:25380] CHIP:DMG: ], - [1666863021.122070][25380:25380] CHIP:DMG: - [1666863021.122074][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863021.122078][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863021.122081][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds - attribute" - PICS: CC.C.A400b - verification: | - ./chip-tool colorcontrol read color-temp-physical-min-mireds 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863050.109374][25380:25380] CHIP:DMG: { - [1666863050.109377][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863050.109382][25380:25380] CHIP:DMG: [ - [1666863050.109385][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863050.109390][25380:25380] CHIP:DMG: { - [1666863050.109393][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863050.109397][25380:25380] CHIP:DMG: { - [1666863050.109400][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863050.109407][25380:25380] CHIP:DMG: AttributePathIB = - [1666863050.109411][25380:25380] CHIP:DMG: { - [1666863050.109414][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863050.109418][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863050.109422][25380:25380] CHIP:DMG: Attribute = 0x0000_400B, - [1666863050.109427][25380:25380] CHIP:DMG: } - [1666863050.109431][25380:25380] CHIP:DMG: - [1666863050.109435][25380:25380] CHIP:DMG: Data = 0, - [1666863050.109437][25380:25380] CHIP:DMG: }, - [1666863050.109444][25380:25380] CHIP:DMG: - [1666863050.109447][25380:25380] CHIP:DMG: }, - [1666863050.109452][25380:25380] CHIP:DMG: - [1666863050.109455][25380:25380] CHIP:DMG: ], - [1666863050.109461][25380:25380] CHIP:DMG: - [1666863050.109464][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863050.109467][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863050.109470][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds - attribute" - PICS: CC.C.A400c - verification: | - ./chip-tool colorcontrol read color-temp-physical-max-mireds 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863073.981375][25380:25380] CHIP:DMG: { - [1666863073.981386][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863073.981405][25380:25380] CHIP:DMG: [ - [1666863073.981415][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863073.981434][25380:25380] CHIP:DMG: { - [1666863073.981447][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863073.981460][25380:25380] CHIP:DMG: { - [1666863073.981473][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863073.981483][25380:25380] CHIP:DMG: AttributePathIB = - [1666863073.981494][25380:25380] CHIP:DMG: { - [1666863073.981514][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863073.981527][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863073.981540][25380:25380] CHIP:DMG: Attribute = 0x0000_400C, - [1666863073.981552][25380:25380] CHIP:DMG: } - [1666863073.981567][25380:25380] CHIP:DMG: - [1666863073.981582][25380:25380] CHIP:DMG: Data = 65279, - [1666863073.981593][25380:25380] CHIP:DMG: }, - [1666863073.981614][25380:25380] CHIP:DMG: - [1666863073.981627][25380:25380] CHIP:DMG: }, - [1666863073.981641][25380:25380] CHIP:DMG: - [1666863073.981651][25380:25380] CHIP:DMG: ], - [1666863073.981699][25380:25380] CHIP:DMG: - [1666863073.981716][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863073.981727][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863073.981737][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds - attribute" - PICS: CC.C.A400d - verification: | - ./chip-tool colorcontrol read couple-color-temp-to-level-min-mireds 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863103.493447][25380:25380] CHIP:DMG: { - [1666863103.493449][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863103.493454][25380:25380] CHIP:DMG: [ - [1666863103.493457][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863103.493461][25380:25380] CHIP:DMG: { - [1666863103.493464][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863103.493468][25380:25380] CHIP:DMG: { - [1666863103.493471][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863103.493475][25380:25380] CHIP:DMG: AttributePathIB = - [1666863103.493479][25380:25380] CHIP:DMG: { - [1666863103.493482][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863103.493485][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863103.493491][25380:25380] CHIP:DMG: Attribute = 0x0000_400D, - [1666863103.493494][25380:25380] CHIP:DMG: } - [1666863103.493498][25380:25380] CHIP:DMG: - [1666863103.493502][25380:25380] CHIP:DMG: Data = 0, - [1666863103.493504][25380:25380] CHIP:DMG: }, - [1666863103.493509][25380:25380] CHIP:DMG: - [1666863103.493512][25380:25380] CHIP:DMG: }, - [1666863103.493517][25380:25380] CHIP:DMG: - [1666863103.493519][25380:25380] CHIP:DMG: ], - [1666863103.493524][25380:25380] CHIP:DMG: - [1666863103.493527][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863103.493530][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863103.493532][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds - attribute" - PICS: CC.C.A4010 - verification: | - ./chip-tool colorcontrol read start-up-color-temperature-mireds 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863132.719434][25380:25380] CHIP:DMG: { - [1666863132.719437][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863132.719442][25380:25380] CHIP:DMG: [ - [1666863132.719445][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863132.719449][25380:25380] CHIP:DMG: { - [1666863132.719453][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863132.719457][25380:25380] CHIP:DMG: { - [1666863132.719460][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863132.719463][25380:25380] CHIP:DMG: AttributePathIB = - [1666863132.719466][25380:25380] CHIP:DMG: { - [1666863132.719469][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863132.719473][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863132.719477][25380:25380] CHIP:DMG: Attribute = 0x0000_4010, - [1666863132.719480][25380:25380] CHIP:DMG: } - [1666863132.719484][25380:25380] CHIP:DMG: - [1666863132.719488][25380:25380] CHIP:DMG: Data = 0, - [1666863132.719492][25380:25380] CHIP:DMG: }, - [1666863132.719496][25380:25380] CHIP:DMG: - [1666863132.719499][25380:25380] CHIP:DMG: }, - [1666863132.719503][25380:25380] CHIP:DMG: - [1666863132.719506][25380:25380] CHIP:DMG: ], - [1666863132.719511][25380:25380] CHIP:DMG: - [1666863132.719514][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863132.719518][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863132.719520][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute" - PICS: CC.C.A0010 - verification: | - ./chip-tool colorcontrol read number-of-primaries 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863157.673552][25380:25380] CHIP:DMG: { - [1666863157.673554][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863157.673559][25380:25380] CHIP:DMG: [ - [1666863157.673562][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863157.673567][25380:25380] CHIP:DMG: { - [1666863157.673570][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863157.673573][25380:25380] CHIP:DMG: { - [1666863157.673576][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863157.673579][25380:25380] CHIP:DMG: AttributePathIB = - [1666863157.673582][25380:25380] CHIP:DMG: { - [1666863157.673586][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863157.673589][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863157.673593][25380:25380] CHIP:DMG: Attribute = 0x0000_0010, - [1666863157.673596][25380:25380] CHIP:DMG: } - [1666863157.673600][25380:25380] CHIP:DMG: - [1666863157.673604][25380:25380] CHIP:DMG: Data = 0, - [1666863157.673608][25380:25380] CHIP:DMG: }, - [1666863157.673613][25380:25380] CHIP:DMG: - [1666863157.673616][25380:25380] CHIP:DMG: }, - [1666863157.673621][25380:25380] CHIP:DMG: - [1666863157.673624][25380:25380] CHIP:DMG: ], - [1666863157.673629][25380:25380] CHIP:DMG: - [1666863157.673632][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863157.673635][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863157.673637][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0011) Primary1X attribute" - PICS: CC.C.A0011 - verification: | - ./chip-tool colorcontrol read primary1x 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - [ReportDataMessage = - [1666863188.044156][25380:25380] CHIP:DMG: { - [1666863188.044159][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863188.044166][25380:25380] CHIP:DMG: [ - [1666863188.044171][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863188.044177][25380:25380] CHIP:DMG: { - [1666863188.044181][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863188.044186][25380:25380] CHIP:DMG: { - [1666863188.044191][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863188.044195][25380:25380] CHIP:DMG: AttributePathIB = - [1666863188.044201][25380:25380] CHIP:DMG: { - [1666863188.044206][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863188.044210][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863188.044215][25380:25380] CHIP:DMG: Attribute = 0x0000_0011, - [1666863188.044219][25380:25380] CHIP:DMG: } - [1666863188.044225][25380:25380] CHIP:DMG: - [1666863188.044229][25380:25380] CHIP:DMG: Data = 0, - [1666863188.044233][25380:25380] CHIP:DMG: }, - [1666863188.044239][25380:25380] CHIP:DMG: - [1666863188.044242][25380:25380] CHIP:DMG: }, - [1666863188.044249][25380:25380] CHIP:DMG: - [1666863188.044253][25380:25380] CHIP:DMG: ], - [1666863188.044260][25380:25380] CHIP:DMG: - [1666863188.044264][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863188.044268][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863188.044272][25380:25380] CHIP:DMG: } - [1666863188.044276][25380:25380] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x0012) Primary1Y attribute" - PICS: CC.C.A0012 - verification: | - ./chip-tool colorcontrol read primary1y 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863261.341318][25380:25380] CHIP:DMG: { - [1666863261.341321][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863261.341326][25380:25380] CHIP:DMG: [ - [1666863261.341329][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863261.341335][25380:25380] CHIP:DMG: { - [1666863261.341337][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863261.341341][25380:25380] CHIP:DMG: { - [1666863261.341345][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863261.341348][25380:25380] CHIP:DMG: AttributePathIB = - [1666863261.341351][25380:25380] CHIP:DMG: { - [1666863261.341354][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863261.341358][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863261.341362][25380:25380] CHIP:DMG: Attribute = 0x0000_0012, - [1666863261.341365][25380:25380] CHIP:DMG: } - [1666863261.341368][25380:25380] CHIP:DMG: - [1666863261.341373][25380:25380] CHIP:DMG: Data = 0, - [1666863261.341376][25380:25380] CHIP:DMG: }, - [1666863261.341379][25380:25380] CHIP:DMG: - [1666863261.341382][25380:25380] CHIP:DMG: }, - [1666863261.341387][25380:25380] CHIP:DMG: - [1666863261.341393][25380:25380] CHIP:DMG: ], - [1666863261.341397][25380:25380] CHIP:DMG: - [1666863261.341401][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863261.341403][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863261.341405][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0013) Primary1Intensity attribute" - PICS: CC.C.A0013 - verification: | - ./chip-tool colorcontrol read primary1intensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863288.450234][25380:25380] CHIP:DMG: { - [1666863288.450236][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863288.450241][25380:25380] CHIP:DMG: [ - [1666863288.450243][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863288.450247][25380:25380] CHIP:DMG: { - [1666863288.450250][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863288.450254][25380:25380] CHIP:DMG: { - [1666863288.450257][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863288.450260][25380:25380] CHIP:DMG: AttributePathIB = - [1666863288.450264][25380:25380] CHIP:DMG: { - [1666863288.450267][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863288.450271][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863288.450274][25380:25380] CHIP:DMG: Attribute = 0x0000_0013, - [1666863288.450277][25380:25380] CHIP:DMG: } - [1666863288.450281][25380:25380] CHIP:DMG: - [1666863288.450286][25380:25380] CHIP:DMG: Data = 0, - [1666863288.450289][25380:25380] CHIP:DMG: }, - [1666863288.450295][25380:25380] CHIP:DMG: - [1666863288.450297][25380:25380] CHIP:DMG: }, - [1666863288.450302][25380:25380] CHIP:DMG: - [1666863288.450305][25380:25380] CHIP:DMG: ], - [1666863288.450309][25380:25380] CHIP:DMG: - [1666863288.450313][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863288.450316][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863288.450319][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0015) Primary2X attribute" - PICS: CC.C.A0015 - verification: | - ./chip-tool colorcontrol read primary2x 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863327.752049][25380:25380] CHIP:DMG: { - [1666863327.752059][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863327.752076][25380:25380] CHIP:DMG: [ - [1666863327.752087][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863327.752104][25380:25380] CHIP:DMG: { - [1666863327.752118][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863327.752131][25380:25380] CHIP:DMG: { - [1666863327.752144][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863327.752159][25380:25380] CHIP:DMG: AttributePathIB = - [1666863327.752173][25380:25380] CHIP:DMG: { - [1666863327.752184][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863327.752199][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863327.752214][25380:25380] CHIP:DMG: Attribute = 0x0000_0015, - [1666863327.752226][25380:25380] CHIP:DMG: } - [1666863327.752241][25380:25380] CHIP:DMG: - [1666863327.752263][25380:25380] CHIP:DMG: Data = 0, - [1666863327.752275][25380:25380] CHIP:DMG: }, - [1666863327.752294][25380:25380] CHIP:DMG: - [1666863327.752304][25380:25380] CHIP:DMG: }, - [1666863327.752321][25380:25380] CHIP:DMG: - [1666863327.752331][25380:25380] CHIP:DMG: ], - [1666863327.752350][25380:25380] CHIP:DMG: - [1666863327.752367][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863327.752381][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863327.752391][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0016) Primary2Y attribute" - PICS: CC.C.A0016 - verification: | - ./chip-tool colorcontrol read primary2y 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863355.607138][25380:25380] CHIP:DMG: { - [1666863355.607140][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863355.607146][25380:25380] CHIP:DMG: [ - [1666863355.607148][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863355.607153][25380:25380] CHIP:DMG: { - [1666863355.607156][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863355.607159][25380:25380] CHIP:DMG: { - [1666863355.607163][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863355.607165][25380:25380] CHIP:DMG: AttributePathIB = - [1666863355.607169][25380:25380] CHIP:DMG: { - [1666863355.607173][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863355.607178][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863355.607181][25380:25380] CHIP:DMG: Attribute = 0x0000_0016, - [1666863355.607188][25380:25380] CHIP:DMG: } - [1666863355.607192][25380:25380] CHIP:DMG: - [1666863355.607196][25380:25380] CHIP:DMG: Data = 0, - [1666863355.607199][25380:25380] CHIP:DMG: }, - [1666863355.607203][25380:25380] CHIP:DMG: - [1666863355.607206][25380:25380] CHIP:DMG: }, - [1666863355.607210][25380:25380] CHIP:DMG: - [1666863355.607213][25380:25380] CHIP:DMG: ], - [1666863355.607218][25380:25380] CHIP:DMG: - [1666863355.607221][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863355.607224][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863355.607226][25380:25380] CHIP:DMG: } - [1666863355.607229][25380:25380] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x0017) Primary2Intensity attribute" - PICS: CC.C.A0017 - verification: | - ./chip-tool colorcontrol read primary2intensity 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863381.231124][25380:25380] CHIP:DMG: { - [1666863381.231127][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863381.231132][25380:25380] CHIP:DMG: [ - [1666863381.231134][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863381.231139][25380:25380] CHIP:DMG: { - [1666863381.231142][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863381.231146][25380:25380] CHIP:DMG: { - [1666863381.231150][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863381.231156][25380:25380] CHIP:DMG: AttributePathIB = - [1666863381.231160][25380:25380] CHIP:DMG: { - [1666863381.231165][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863381.231170][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863381.231176][25380:25380] CHIP:DMG: Attribute = 0x0000_0017, - [1666863381.231180][25380:25380] CHIP:DMG: } - [1666863381.231186][25380:25380] CHIP:DMG: - [1666863381.231191][25380:25380] CHIP:DMG: Data = 0, - [1666863381.231196][25380:25380] CHIP:DMG: }, - [1666863381.231204][25380:25380] CHIP:DMG: - [1666863381.231208][25380:25380] CHIP:DMG: }, - [1666863381.231213][25380:25380] CHIP:DMG: - [1666863381.231217][25380:25380] CHIP:DMG: ], - [1666863381.231224][25380:25380] CHIP:DMG: - [1666863381.231228][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863381.231232][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863381.231235][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0019) Primary3X attribute" - PICS: CC.C.A0019 - verification: | - ./chip-tool colorcontrol read primary3x 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666863405.983475][25380:25380] CHIP:DMG: { - [1666863405.983477][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863405.983483][25380:25380] CHIP:DMG: [ - [1666863405.983485][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863405.983491][25380:25380] CHIP:DMG: { - [1666863405.983494][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863405.983498][25380:25380] CHIP:DMG: { - [1666863405.983502][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863405.983505][25380:25380] CHIP:DMG: AttributePathIB = - [1666863405.983510][25380:25380] CHIP:DMG: { - [1666863405.983513][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863405.983517][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863405.983523][25380:25380] CHIP:DMG: Attribute = 0x0000_0019, - [1666863405.983526][25380:25380] CHIP:DMG: } - [1666863405.983534][25380:25380] CHIP:DMG: - [1666863405.983540][25380:25380] CHIP:DMG: Data = 0, - [1666863405.983544][25380:25380] CHIP:DMG: }, - [1666863405.983548][25380:25380] CHIP:DMG: - [1666863405.983551][25380:25380] CHIP:DMG: }, - [1666863405.983555][25380:25380] CHIP:DMG: - [1666863405.983558][25380:25380] CHIP:DMG: ], - [1666863405.983565][25380:25380] CHIP:DMG: - [1666863405.983568][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863405.983572][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863405.983575][25380:25380] CHIP:DMG: } - [1666863405.983577][25380:25380] CHIP:DMG: - disabled: true - - - label: "DUT reads from the TH the (0x001a) Primary3Y attribute" - PICS: CC.C.A001a - verification: | - ./chip-tool colorcontrol read primary3y 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863435.469111][25380:25380] CHIP:DMG: { - [1666863435.469114][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863435.469119][25380:25380] CHIP:DMG: [ - [1666863435.469122][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863435.469126][25380:25380] CHIP:DMG: { - [1666863435.469130][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863435.469133][25380:25380] CHIP:DMG: { - [1666863435.469137][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863435.469140][25380:25380] CHIP:DMG: AttributePathIB = - [1666863435.469143][25380:25380] CHIP:DMG: { - [1666863435.469147][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863435.469151][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863435.469154][25380:25380] CHIP:DMG: Attribute = 0x0000_001A, - [1666863435.469158][25380:25380] CHIP:DMG: } - [1666863435.469162][25380:25380] CHIP:DMG: - [1666863435.469166][25380:25380] CHIP:DMG: Data = 0, - [1666863435.469168][25380:25380] CHIP:DMG: }, - [1666863435.469173][25380:25380] CHIP:DMG: - [1666863435.469175][25380:25380] CHIP:DMG: }, - [1666863435.469180][25380:25380] CHIP:DMG: - [1666863435.469182][25380:25380] CHIP:DMG: ], - [1666863435.469188][25380:25380] CHIP:DMG: - [1666863435.469191][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863435.469193][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863435.469196][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x001b) Primary3Intensity attribute" - PICS: CC.C.A001b - verification: | - ./chip-tool colorcontrol read primary3intensity 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666863464.087690][25380:25380] CHIP:DMG: { - [1666863464.087693][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863464.087698][25380:25380] CHIP:DMG: [ - [1666863464.087700][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863464.087706][25380:25380] CHIP:DMG: { - [1666863464.087709][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863464.087712][25380:25380] CHIP:DMG: { - [1666863464.087715][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863464.087719][25380:25380] CHIP:DMG: AttributePathIB = - [1666863464.087723][25380:25380] CHIP:DMG: { - [1666863464.087727][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863464.087731][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863464.087735][25380:25380] CHIP:DMG: Attribute = 0x0000_001B, - [1666863464.087738][25380:25380] CHIP:DMG: } - [1666863464.087743][25380:25380] CHIP:DMG: - [1666863464.087746][25380:25380] CHIP:DMG: Data = 0, - [1666863464.087749][25380:25380] CHIP:DMG: }, - [1666863464.087754][25380:25380] CHIP:DMG: - [1666863464.087757][25380:25380] CHIP:DMG: }, - [1666863464.087762][25380:25380] CHIP:DMG: - [1666863464.087764][25380:25380] CHIP:DMG: ], - [1666863464.087769][25380:25380] CHIP:DMG: - [1666863464.087772][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863464.087775][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863464.087778][25380:25380] CHIP:DMG: } - [1666863464.087781][25380:25380] CHIP:DMG: - - CHIP:DMG: }, - disabled: true - - - label: "DUT reads from the TH the (0x0020) Primary4X attribute" - PICS: CC.C.A0020 - verification: | - ./chip-tool colorcontrol read primary4x 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863490.271640][25380:25380] CHIP:DMG: { - [1666863490.271643][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863490.271648][25380:25380] CHIP:DMG: [ - [1666863490.271651][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863490.271656][25380:25380] CHIP:DMG: { - [1666863490.271659][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863490.271663][25380:25380] CHIP:DMG: { - [1666863490.271667][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863490.271670][25380:25380] CHIP:DMG: AttributePathIB = - [1666863490.271673][25380:25380] CHIP:DMG: { - [1666863490.271677][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863490.271680][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863490.271684][25380:25380] CHIP:DMG: Attribute = 0x0000_0020, - [1666863490.271690][25380:25380] CHIP:DMG: } - [1666863490.271694][25380:25380] CHIP:DMG: - [1666863490.271698][25380:25380] CHIP:DMG: Data = 0, - [1666863490.271702][25380:25380] CHIP:DMG: }, - [1666863490.271707][25380:25380] CHIP:DMG: - [1666863490.271710][25380:25380] CHIP:DMG: }, - [1666863490.271715][25380:25380] CHIP:DMG: - [1666863490.271718][25380:25380] CHIP:DMG: ], - [1666863490.271723][25380:25380] CHIP:DMG: - [1666863490.271726][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863490.271729][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863490.271732][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0021) Primary4Y attribute" - PICS: CC.C.A0021 - verification: | - ./chip-tool colorcontrol read primary4y 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863522.473914][25380:25380] CHIP:DMG: { - [1666863522.473917][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863522.473923][25380:25380] CHIP:DMG: [ - [1666863522.473925][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863522.473930][25380:25380] CHIP:DMG: { - [1666863522.473933][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863522.473938][25380:25380] CHIP:DMG: { - [1666863522.473941][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863522.473944][25380:25380] CHIP:DMG: AttributePathIB = - [1666863522.473949][25380:25380] CHIP:DMG: { - [1666863522.473952][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863522.473957][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863522.473961][25380:25380] CHIP:DMG: Attribute = 0x0000_0021, - [1666863522.473964][25380:25380] CHIP:DMG: } - [1666863522.473968][25380:25380] CHIP:DMG: - [1666863522.473972][25380:25380] CHIP:DMG: Data = 0, - [1666863522.473975][25380:25380] CHIP:DMG: }, - [1666863522.473979][25380:25380] CHIP:DMG: - [1666863522.473982][25380:25380] CHIP:DMG: }, - [1666863522.473987][25380:25380] CHIP:DMG: - [1666863522.473989][25380:25380] CHIP:DMG: ], - [1666863522.473994][25380:25380] CHIP:DMG: - [1666863522.473997][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863522.473999][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863522.474001][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0022) Primary4Intensity attribute" - PICS: CC.C.A0022 - verification: | - ./chip-tool colorcontrol read primary4intensity 1 1 - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863555.278546][25380:25380] CHIP:DMG: { - [1666863555.278548][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863555.278552][25380:25380] CHIP:DMG: [ - [1666863555.278555][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863555.278559][25380:25380] CHIP:DMG: { - [1666863555.278563][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863555.278565][25380:25380] CHIP:DMG: { - [1666863555.278568][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863555.278571][25380:25380] CHIP:DMG: AttributePathIB = - [1666863555.278575][25380:25380] CHIP:DMG: { - [1666863555.278579][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863555.278583][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863555.278586][25380:25380] CHIP:DMG: Attribute = 0x0000_0022, - [1666863555.278592][25380:25380] CHIP:DMG: } - [1666863555.278596][25380:25380] CHIP:DMG: - [1666863555.278600][25380:25380] CHIP:DMG: Data = 0, - [1666863555.278603][25380:25380] CHIP:DMG: }, - [1666863555.278607][25380:25380] CHIP:DMG: - [1666863555.278610][25380:25380] CHIP:DMG: }, - [1666863555.278615][25380:25380] CHIP:DMG: - [1666863555.278618][25380:25380] CHIP:DMG: ], - [1666863555.278622][25380:25380] CHIP:DMG: - [1666863555.278625][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863555.278629][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863555.278632][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0024) Primary5X attribute" - PICS: CC.C.A0024 - verification: | - ./chip-tool colorcontrol read primary5x 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - ReportDataMessage = - [1666863587.103204][25380:25380] CHIP:DMG: { - [1666863587.103207][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863587.103211][25380:25380] CHIP:DMG: [ - [1666863587.103214][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863587.103219][25380:25380] CHIP:DMG: { - [1666863587.103222][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863587.103225][25380:25380] CHIP:DMG: { - [1666863587.103228][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863587.103231][25380:25380] CHIP:DMG: AttributePathIB = - [1666863587.103235][25380:25380] CHIP:DMG: { - [1666863587.103239][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863587.103245][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863587.103249][25380:25380] CHIP:DMG: Attribute = 0x0000_0024, - [1666863587.103254][25380:25380] CHIP:DMG: } - [1666863587.103258][25380:25380] CHIP:DMG: - [1666863587.103262][25380:25380] CHIP:DMG: Data = 0, - [1666863587.103266][25380:25380] CHIP:DMG: }, - [1666863587.103271][25380:25380] CHIP:DMG: - [1666863587.103273][25380:25380] CHIP:DMG: }, - [1666863587.103278][25380:25380] CHIP:DMG: - [1666863587.103281][25380:25380] CHIP:DMG: ], - [1666863587.103286][25380:25380] CHIP:DMG: - [1666863587.103289][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863587.103292][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863587.103295][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0025) Primary5Y attribute" - PICS: CC.C.A0025 - verification: | - ./chip-tool colorcontrol read primary5y 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863613.004010][25380:25380] CHIP:DMG: { - [1666863613.004014][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863613.004021][25380:25380] CHIP:DMG: [ - [1666863613.004025][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863613.004033][25380:25380] CHIP:DMG: { - [1666863613.004036][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863613.004042][25380:25380] CHIP:DMG: { - [1666863613.004047][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863613.004052][25380:25380] CHIP:DMG: AttributePathIB = - [1666863613.004058][25380:25380] CHIP:DMG: { - [1666863613.004062][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863613.004067][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863613.004072][25380:25380] CHIP:DMG: Attribute = 0x0000_0025, - [1666863613.004076][25380:25380] CHIP:DMG: } - [1666863613.004081][25380:25380] CHIP:DMG: - [1666863613.004086][25380:25380] CHIP:DMG: Data = 0, - [1666863613.004093][25380:25380] CHIP:DMG: }, - [1666863613.004099][25380:25380] CHIP:DMG: - [1666863613.004104][25380:25380] CHIP:DMG: }, - [1666863613.004110][25380:25380] CHIP:DMG: - [1666863613.004113][25380:25380] CHIP:DMG: ], - [1666863613.004119][25380:25380] CHIP:DMG: - [1666863613.004124][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863613.004129][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863613.004132][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0026) Primary5Intensity attribute" - PICS: CC.C.A0026 - verification: | - ./chip-tool colorcontrol read primary5intensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863640.702107][25380:25380] CHIP:DMG: { - [1666863640.702111][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863640.702118][25380:25380] CHIP:DMG: [ - [1666863640.702122][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863640.702129][25380:25380] CHIP:DMG: { - [1666863640.702134][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863640.702139][25380:25380] CHIP:DMG: { - [1666863640.702144][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863640.702148][25380:25380] CHIP:DMG: AttributePathIB = - [1666863640.702153][25380:25380] CHIP:DMG: { - [1666863640.702159][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863640.702165][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863640.702170][25380:25380] CHIP:DMG: Attribute = 0x0000_0026, - [1666863640.702175][25380:25380] CHIP:DMG: } - [1666863640.702181][25380:25380] CHIP:DMG: - [1666863640.702186][25380:25380] CHIP:DMG: Data = 0, - [1666863640.702191][25380:25380] CHIP:DMG: }, - [1666863640.702199][25380:25380] CHIP:DMG: - [1666863640.702203][25380:25380] CHIP:DMG: }, - [1666863640.702210][25380:25380] CHIP:DMG: - [1666863640.702213][25380:25380] CHIP:DMG: ], - [1666863640.702220][25380:25380] CHIP:DMG: - [1666863640.702224][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863640.702229][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863640.702232][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0028) Primary6X attribute" - PICS: CC.C.A0028 - verification: | - ./chip-tool colorcontrol read primary6x 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863670.226471][25380:25380] CHIP:DMG: { - [1666863670.226474][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863670.226479][25380:25380] CHIP:DMG: [ - [1666863670.226482][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863670.226488][25380:25380] CHIP:DMG: { - [1666863670.226491][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863670.226494][25380:25380] CHIP:DMG: { - [1666863670.226498][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863670.226501][25380:25380] CHIP:DMG: AttributePathIB = - [1666863670.226506][25380:25380] CHIP:DMG: { - [1666863670.226509][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863670.226514][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863670.226518][25380:25380] CHIP:DMG: Attribute = 0x0000_0028, - [1666863670.226524][25380:25380] CHIP:DMG: } - [1666863670.226529][25380:25380] CHIP:DMG: - [1666863670.226533][25380:25380] CHIP:DMG: Data = 0, - [1666863670.226536][25380:25380] CHIP:DMG: }, - [1666863670.226543][25380:25380] CHIP:DMG: - [1666863670.226546][25380:25380] CHIP:DMG: }, - [1666863670.226551][25380:25380] CHIP:DMG: - [1666863670.226554][25380:25380] CHIP:DMG: ], - [1666863670.226559][25380:25380] CHIP:DMG: - [1666863670.226562][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863670.226566][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863670.226568][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x0029) Primary6Y attribute" - PICS: CC.C.A0029 - verification: | - ./chip-tool colorcontrol read primary6y 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863704.984668][25380:25380] CHIP:DMG: { - [1666863704.984671][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863704.984676][25380:25380] CHIP:DMG: [ - [1666863704.984679][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863704.984684][25380:25380] CHIP:DMG: { - [1666863704.984687][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863704.984691][25380:25380] CHIP:DMG: { - [1666863704.984695][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863704.984701][25380:25380] CHIP:DMG: AttributePathIB = - [1666863704.984704][25380:25380] CHIP:DMG: { - [1666863704.984709][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863704.984712][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863704.984718][25380:25380] CHIP:DMG: Attribute = 0x0000_0029, - [1666863704.984721][25380:25380] CHIP:DMG: } - [1666863704.984725][25380:25380] CHIP:DMG: - [1666863704.984729][25380:25380] CHIP:DMG: Data = 0, - [1666863704.984732][25380:25380] CHIP:DMG: }, - [1666863704.984737][25380:25380] CHIP:DMG: - [1666863704.984740][25380:25380] CHIP:DMG: }, - [1666863704.984744][25380:25380] CHIP:DMG: - [1666863704.984746][25380:25380] CHIP:DMG: ], - [1666863704.984751][25380:25380] CHIP:DMG: - [1666863704.984754][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863704.984757][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863704.984760][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the (0x002a) Primary6Intensity attribute" - PICS: CC.C.A002a - verification: | - ./chip-tool colorcontrol read primary6intensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863735.953001][25380:25380] CHIP:DMG: { - [1666863735.953004][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863735.953010][25380:25380] CHIP:DMG: [ - [1666863735.953012][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863735.953017][25380:25380] CHIP:DMG: { - [1666863735.953020][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863735.953023][25380:25380] CHIP:DMG: { - [1666863735.953026][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863735.953030][25380:25380] CHIP:DMG: AttributePathIB = - [1666863735.953034][25380:25380] CHIP:DMG: { - [1666863735.953037][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863735.953041][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863735.953044][25380:25380] CHIP:DMG: Attribute = 0x0000_002A, - [1666863735.953048][25380:25380] CHIP:DMG: } - [1666863735.953053][25380:25380] CHIP:DMG: - [1666863735.953057][25380:25380] CHIP:DMG: Data = 0, - [1666863735.953061][25380:25380] CHIP:DMG: }, - [1666863735.953066][25380:25380] CHIP:DMG: - [1666863735.953069][25380:25380] CHIP:DMG: }, - [1666863735.953073][25380:25380] CHIP:DMG: - [1666863735.953076][25380:25380] CHIP:DMG: ], - [1666863735.953081][25380:25380] CHIP:DMG: - [1666863735.953084][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863735.953089][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863735.953091][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the Optional (0x0030) WhitePointX attribute" - PICS: CC.C.A0030 - verification: | - ./chip-tool colorcontrol read white-point-x 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863776.073728][25380:25380] CHIP:DMG: { - [1666863776.073730][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863776.073736][25380:25380] CHIP:DMG: [ - [1666863776.073739][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863776.073743][25380:25380] CHIP:DMG: { - [1666863776.073746][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863776.073750][25380:25380] CHIP:DMG: { - [1666863776.073753][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863776.073757][25380:25380] CHIP:DMG: AttributePathIB = - [1666863776.073760][25380:25380] CHIP:DMG: { - [1666863776.073764][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863776.073767][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863776.073771][25380:25380] CHIP:DMG: Attribute = 0x0000_0030, - [1666863776.073774][25380:25380] CHIP:DMG: } - [1666863776.073778][25380:25380] CHIP:DMG: - [1666863776.073782][25380:25380] CHIP:DMG: Data = 0, - [1666863776.073785][25380:25380] CHIP:DMG: }, - [1666863776.073790][25380:25380] CHIP:DMG: - [1666863776.073792][25380:25380] CHIP:DMG: }, - [1666863776.073797][25380:25380] CHIP:DMG: - [1666863776.073799][25380:25380] CHIP:DMG: ], - [1666863776.073804][25380:25380] CHIP:DMG: - [1666863776.073807][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863776.073809][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863776.073812][25380:25380] CHIP:DMG: } - disabled: true - - - label: "DUT reads from the TH the Optional (0x0031) WhitePointY attribute" - PICS: CC.C.A0031 - verification: | - ./chip-tool colorcontrol read white-point-y 1 1 - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863799.002352][25380:25380] CHIP:DMG: { - [1666863799.002358][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863799.002369][25380:25380] CHIP:DMG: [ - [1666863799.002375][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863799.002392][25380:25380] CHIP:DMG: { - [1666863799.002399][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863799.002410][25380:25380] CHIP:DMG: { - [1666863799.002418][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863799.002424][25380:25380] CHIP:DMG: AttributePathIB = - [1666863799.002431][25380:25380] CHIP:DMG: { - [1666863799.002440][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863799.002448][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863799.002455][25380:25380] CHIP:DMG: Attribute = 0x0000_0031, - [1666863799.002464][25380:25380] CHIP:DMG: } - [1666863799.002474][25380:25380] CHIP:DMG: - [1666863799.002485][25380:25380] CHIP:DMG: Data = 0, - [1666863799.002491][25380:25380] CHIP:DMG: }, - [1666863799.002501][25380:25380] CHIP:DMG: - [1666863799.002508][25380:25380] CHIP:DMG: }, - [1666863799.002516][25380:25380] CHIP:DMG: - [1666863799.002523][25380:25380] CHIP:DMG: ], - [1666863799.002537][25380:25380] CHIP:DMG: - [1666863799.002544][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863799.002551][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863799.002558][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute" - PICS: CC.C.A0032 - verification: | - ./chip-tool colorcontrol read color-point-rx 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863840.749291][25380:25380] CHIP:DMG: { - [1666863840.749294][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863840.749299][25380:25380] CHIP:DMG: [ - [1666863840.749301][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863840.749306][25380:25380] CHIP:DMG: { - [1666863840.749309][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863840.749312][25380:25380] CHIP:DMG: { - [1666863840.749315][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863840.749319][25380:25380] CHIP:DMG: AttributePathIB = - [1666863840.749323][25380:25380] CHIP:DMG: { - [1666863840.749327][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863840.749331][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863840.749335][25380:25380] CHIP:DMG: Attribute = 0x0000_0032, - [1666863840.749338][25380:25380] CHIP:DMG: } - [1666863840.749342][25380:25380] CHIP:DMG: - [1666863840.749346][25380:25380] CHIP:DMG: Data = 0, - [1666863840.749349][25380:25380] CHIP:DMG: }, - [1666863840.749354][25380:25380] CHIP:DMG: - [1666863840.749357][25380:25380] CHIP:DMG: }, - [1666863840.749361][25380:25380] CHIP:DMG: - [1666863840.749364][25380:25380] CHIP:DMG: ], - [1666863840.749369][25380:25380] CHIP:DMG: - [1666863840.749372][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863840.749375][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863840.749378][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute" - PICS: CC.C.A0033 - verification: | - ./chip-tool colorcontrol read color-point-ry 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863871.297604][25380:25380] CHIP:DMG: { - [1666863871.297607][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863871.297612][25380:25380] CHIP:DMG: [ - [1666863871.297615][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863871.297621][25380:25380] CHIP:DMG: { - [1666863871.297624][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863871.297628][25380:25380] CHIP:DMG: { - [1666863871.297631][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863871.297635][25380:25380] CHIP:DMG: AttributePathIB = - [1666863871.297638][25380:25380] CHIP:DMG: { - [1666863871.297642][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863871.297645][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863871.297650][25380:25380] CHIP:DMG: Attribute = 0x0000_0033, - [1666863871.297653][25380:25380] CHIP:DMG: } - [1666863871.297657][25380:25380] CHIP:DMG: - [1666863871.297661][25380:25380] CHIP:DMG: Data = 0, - [1666863871.297664][25380:25380] CHIP:DMG: }, - [1666863871.297676][25380:25380] CHIP:DMG: - [1666863871.297680][25380:25380] CHIP:DMG: }, - [1666863871.297685][25380:25380] CHIP:DMG: - [1666863871.297687][25380:25380] CHIP:DMG: ], - [1666863871.297692][25380:25380] CHIP:DMG: - [1666863871.297695][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863871.297697][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863871.297700][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity - attribute" - PICS: CC.C.A0034 - verification: | - ./chip-tool colorcontrol read color-point-rintensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863905.049383][25380:25380] CHIP:DMG: { - [1666863905.049386][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863905.049391][25380:25380] CHIP:DMG: [ - [1666863905.049393][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863905.049399][25380:25380] CHIP:DMG: { - [1666863905.049401][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863905.049405][25380:25380] CHIP:DMG: { - [1666863905.049409][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863905.049413][25380:25380] CHIP:DMG: AttributePathIB = - [1666863905.049416][25380:25380] CHIP:DMG: { - [1666863905.049421][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863905.049424][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863905.049428][25380:25380] CHIP:DMG: Attribute = 0x0000_0034, - [1666863905.049431][25380:25380] CHIP:DMG: } - [1666863905.049436][25380:25380] CHIP:DMG: - [1666863905.049439][25380:25380] CHIP:DMG: Data = 0, - [1666863905.049442][25380:25380] CHIP:DMG: }, - [1666863905.049447][25380:25380] CHIP:DMG: - [1666863905.049450][25380:25380] CHIP:DMG: }, - [1666863905.049454][25380:25380] CHIP:DMG: - [1666863905.049458][25380:25380] CHIP:DMG: ], - [1666863905.049463][25380:25380] CHIP:DMG: - [1666863905.049466][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863905.049469][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863905.049471][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute" - PICS: CC.C.A0036 - verification: | - ./chip-tool colorcontrol read color-point-gx 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863936.141298][25380:25380] CHIP:DMG: { - [1666863936.141302][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863936.141309][25380:25380] CHIP:DMG: [ - [1666863936.141312][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863936.141320][25380:25380] CHIP:DMG: { - [1666863936.141325][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863936.141330][25380:25380] CHIP:DMG: { - [1666863936.141334][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863936.141339][25380:25380] CHIP:DMG: AttributePathIB = - [1666863936.141344][25380:25380] CHIP:DMG: { - [1666863936.141349][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863936.141354][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863936.141359][25380:25380] CHIP:DMG: Attribute = 0x0000_0036, - [1666863936.141364][25380:25380] CHIP:DMG: } - [1666863936.141369][25380:25380] CHIP:DMG: - [1666863936.141375][25380:25380] CHIP:DMG: Data = 0, - [1666863936.141379][25380:25380] CHIP:DMG: }, - [1666863936.141386][25380:25380] CHIP:DMG: - [1666863936.141391][25380:25380] CHIP:DMG: }, - [1666863936.141397][25380:25380] CHIP:DMG: - [1666863936.141401][25380:25380] CHIP:DMG: ], - [1666863936.141408][25380:25380] CHIP:DMG: - [1666863936.141412][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863936.141417][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863936.141420][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute" - PICS: CC.C.A0037 - verification: | - ./chip-tool colorcontrol read color-point-gy 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863962.602460][25380:25380] CHIP:DMG: { - [1666863962.602464][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863962.602471][25380:25380] CHIP:DMG: [ - [1666863962.602475][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863962.602481][25380:25380] CHIP:DMG: { - [1666863962.602486][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863962.602491][25380:25380] CHIP:DMG: { - [1666863962.602496][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863962.602501][25380:25380] CHIP:DMG: AttributePathIB = - [1666863962.602506][25380:25380] CHIP:DMG: { - [1666863962.602511][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863962.602516][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863962.602521][25380:25380] CHIP:DMG: Attribute = 0x0000_0037, - [1666863962.602527][25380:25380] CHIP:DMG: } - [1666863962.602533][25380:25380] CHIP:DMG: - [1666863962.602539][25380:25380] CHIP:DMG: Data = 0, - [1666863962.602543][25380:25380] CHIP:DMG: }, - [1666863962.602549][25380:25380] CHIP:DMG: - [1666863962.602553][25380:25380] CHIP:DMG: }, - [1666863962.602559][25380:25380] CHIP:DMG: - [1666863962.602563][25380:25380] CHIP:DMG: ], - [1666863962.602571][25380:25380] CHIP:DMG: - [1666863962.602574][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863962.602579][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863962.602582][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity - attribute" - PICS: CC.C.A0038 - verification: | - ./chip-tool colorcontrol read color-point-gintensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666863996.208062][25380:25380] CHIP:DMG: { - [1666863996.208066][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666863996.208073][25380:25380] CHIP:DMG: [ - [1666863996.208076][25380:25380] CHIP:DMG: AttributeReportIB = - [1666863996.208085][25380:25380] CHIP:DMG: { - [1666863996.208089][25380:25380] CHIP:DMG: AttributeDataIB = - [1666863996.208094][25380:25380] CHIP:DMG: { - [1666863996.208098][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666863996.208103][25380:25380] CHIP:DMG: AttributePathIB = - [1666863996.208108][25380:25380] CHIP:DMG: { - [1666863996.208114][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666863996.208119][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666863996.208127][25380:25380] CHIP:DMG: Attribute = 0x0000_0038, - [1666863996.208132][25380:25380] CHIP:DMG: } - [1666863996.208138][25380:25380] CHIP:DMG: - [1666863996.208144][25380:25380] CHIP:DMG: Data = 0, - [1666863996.208149][25380:25380] CHIP:DMG: }, - [1666863996.208155][25380:25380] CHIP:DMG: - [1666863996.208161][25380:25380] CHIP:DMG: }, - [1666863996.208167][25380:25380] CHIP:DMG: - [1666863996.208170][25380:25380] CHIP:DMG: ], - [1666863996.208177][25380:25380] CHIP:DMG: - [1666863996.208182][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666863996.208186][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666863996.208190][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute" - PICS: CC.C.A003a - verification: | - ./chip-tool colorcontrol read color-point-bx 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666864024.766979][25380:25380] CHIP:DMG: { - [1666864024.766982][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666864024.766987][25380:25380] CHIP:DMG: [ - [1666864024.766990][25380:25380] CHIP:DMG: AttributeReportIB = - [1666864024.766995][25380:25380] CHIP:DMG: { - [1666864024.766998][25380:25380] CHIP:DMG: AttributeDataIB = - [1666864024.767001][25380:25380] CHIP:DMG: { - [1666864024.767006][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666864024.767010][25380:25380] CHIP:DMG: AttributePathIB = - [1666864024.767015][25380:25380] CHIP:DMG: { - [1666864024.767020][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666864024.767025][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666864024.767032][25380:25380] CHIP:DMG: Attribute = 0x0000_003A, - [1666864024.767037][25380:25380] CHIP:DMG: } - [1666864024.767043][25380:25380] CHIP:DMG: - [1666864024.767048][25380:25380] CHIP:DMG: Data = 0, - [1666864024.767053][25380:25380] CHIP:DMG: }, - [1666864024.767059][25380:25380] CHIP:DMG: - [1666864024.767062][25380:25380] CHIP:DMG: }, - [1666864024.767069][25380:25380] CHIP:DMG: - [1666864024.767071][25380:25380] CHIP:DMG: ], - [1666864024.767078][25380:25380] CHIP:DMG: - [1666864024.767081][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666864024.767086][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666864024.767088][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute" - PICS: CC.C.A003b - verification: | - ./chip-tool colorcontrol read color-point-by 1 1 - - - Verify response contains an uint16 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666864059.275756][25380:25380] CHIP:DMG: { - [1666864059.275759][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666864059.275765][25380:25380] CHIP:DMG: [ - [1666864059.275767][25380:25380] CHIP:DMG: AttributeReportIB = - [1666864059.275771][25380:25380] CHIP:DMG: { - [1666864059.275774][25380:25380] CHIP:DMG: AttributeDataIB = - [1666864059.275778][25380:25380] CHIP:DMG: { - [1666864059.275780][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666864059.275784][25380:25380] CHIP:DMG: AttributePathIB = - [1666864059.275787][25380:25380] CHIP:DMG: { - [1666864059.275791][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666864059.275794][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666864059.275800][25380:25380] CHIP:DMG: Attribute = 0x0000_003B, - [1666864059.275806][25380:25380] CHIP:DMG: } - [1666864059.275811][25380:25380] CHIP:DMG: - [1666864059.275816][25380:25380] CHIP:DMG: Data = 0, - [1666864059.275820][25380:25380] CHIP:DMG: }, - [1666864059.275826][25380:25380] CHIP:DMG: - [1666864059.275830][25380:25380] CHIP:DMG: }, - [1666864059.275836][25380:25380] CHIP:DMG: - [1666864059.275838][25380:25380] CHIP:DMG: ], - [1666864059.275844][25380:25380] CHIP:DMG: - [1666864059.275847][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666864059.275850][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666864059.275854][25380:25380] CHIP:DMG: } - disabled: true - - - label: - "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity - attribute" - PICS: CC.C.A003c - verification: | - ./chip-tool colorcontrol read color-point-bintensity 1 1 - - - Verify response contains an uint8 value in TH(all-clusters-app) Logs: - - - ReportDataMessage = - [1666864090.690549][25380:25380] CHIP:DMG: { - [1666864090.690552][25380:25380] CHIP:DMG: AttributeReportIBs = - [1666864090.690557][25380:25380] CHIP:DMG: [ - [1666864090.690559][25380:25380] CHIP:DMG: AttributeReportIB = - [1666864090.690564][25380:25380] CHIP:DMG: { - [1666864090.690567][25380:25380] CHIP:DMG: AttributeDataIB = - [1666864090.690571][25380:25380] CHIP:DMG: { - [1666864090.690575][25380:25380] CHIP:DMG: DataVersion = 0x6851d6f7, - [1666864090.690578][25380:25380] CHIP:DMG: AttributePathIB = - [1666864090.690582][25380:25380] CHIP:DMG: { - [1666864090.690587][25380:25380] CHIP:DMG: Endpoint = 0x1, - [1666864090.690590][25380:25380] CHIP:DMG: Cluster = 0x300, - [1666864090.690594][25380:25380] CHIP:DMG: Attribute = 0x0000_003C, - [1666864090.690597][25380:25380] CHIP:DMG: } - [1666864090.690602][25380:25380] CHIP:DMG: - [1666864090.690605][25380:25380] CHIP:DMG: Data = 0, - [1666864090.690611][25380:25380] CHIP:DMG: }, - [1666864090.690615][25380:25380] CHIP:DMG: - [1666864090.690619][25380:25380] CHIP:DMG: }, - [1666864090.690623][25380:25380] CHIP:DMG: - [1666864090.690627][25380:25380] CHIP:DMG: ], - [1666864090.690632][25380:25380] CHIP:DMG: - [1666864090.690635][25380:25380] CHIP:DMG: SuppressResponse = true, - [1666864090.690638][25380:25380] CHIP:DMG: InteractionModelRevision = 1 - [1666864090.690640][25380:25380] CHIP:DMG: } - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml new file mode 100644 index 00000000000000..1b487bc296e03f --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml @@ -0,0 +1,318 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 25.2.2. [TC-CC-2.2] Attributes with client as DUT + +PICS: + - CC.C + +config: + nodeId: 0x12344321 + cluster: "Color Control" + endpoint: 1 + +tests: + #- label: "Wait for the device to be commissioned" + # cluster: "DelayCommands" + # command: "WaitForCommissioning" + + - label: "DUT reads from the TH the (0x0000) CurrentHue attribute" + PICS: CC.C.A0000 + wait: "readAttribute" + attribute: "CurrentHue" + + - label: "DUT reads from the TH the (0x0001) CurrentSaturation attribute" + PICS: CC.C.A0001 + wait: "readAttribute" + attribute: "CurrentSaturation" + + - label: + "DUT reads from the TH the Optional (0x0002) RemainingTime attribute" + PICS: CC.C.A0002 + wait: "readAttribute" + attribute: "RemainingTime" + + - label: "DUT reads from the TH the (0x0003) CurrentX attribute" + PICS: CC.C.A0003 + wait: "readAttribute" + attribute: "CurrentX" + + - label: "DUT reads from the TH the (0x0004) CurrentY attribute" + PICS: CC.C.A0004 + wait: "readAttribute" + attribute: "CurrentY" + + - label: + "DUT reads from the TH the Optional (0x0005) DriftCompensation + attribute" + PICS: CC.C.A0005 + wait: "readAttribute" + attribute: "DriftCompensation" + + - label: + "DUT reads from the TH the Optional (0x0006) CompensationText + attribute" + PICS: CC.C.A0006 + wait: "readAttribute" + attribute: "CompensationText" + + - label: + "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute" + PICS: CC.C.A0007 + wait: "readAttribute" + attribute: "ColorTemperatureMireds" + + - label: "DUT reads from the TH the (0x0008) ColorMode attribute" + PICS: CC.C.A0008 + wait: "readAttribute" + attribute: "ColorMode" + + - label: "DUT reads from the TH the (0x000f) Options attribute" + PICS: CC.C.A000f + wait: "readAttribute" + attribute: "Options" + + - label: "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute" + PICS: CC.C.A4000 + wait: "readAttribute" + attribute: "EnhancedCurrentHue" + + - label: "DUT reads from the TH the (0x4001) EnhancedColorMode attribute" + PICS: CC.C.A4001 + wait: "readAttribute" + attribute: "EnhancedColorMode" + + - label: "DUT reads from the TH the (0x4002) ColorLoopActive attribute" + PICS: CC.C.A4002 + wait: "readAttribute" + attribute: "ColorLoopActive" + + - label: "DUT reads from the TH the (0x4003) ColorLoopDirection attribute" + PICS: CC.C.A4003 + wait: "readAttribute" + attribute: "ColorLoopDirection" + + - label: "DUT reads from the TH the (0x4004) ColorLoopTime attribute" + PICS: CC.C.A4004 + wait: "readAttribute" + attribute: "ColorLoopTime" + + - label: + "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue + attribute" + PICS: CC.C.A4005 + wait: "readAttribute" + attribute: "ColorLoopStartEnhancedHue" + + - label: + "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue + attribute" + PICS: CC.C.A4006 + wait: "readAttribute" + attribute: "ColorLoopStoredEnhancedHue" + + - label: "DUT reads from the TH the (0x400a) ColorCapabilities attribute" + PICS: CC.C.A400a + wait: "readAttribute" + attribute: "ColorCapabilities" + + - label: + "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds + attribute" + PICS: CC.C.A400b + wait: "readAttribute" + attribute: "ColorTempPhysicalMinMireds" + + - label: + "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds + attribute" + PICS: CC.C.A400c + wait: "readAttribute" + attribute: "ColorTempPhysicalMaxMireds" + + - label: + "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds + attribute" + PICS: CC.C.A400d + wait: "readAttribute" + attribute: "CoupleColorTempToLevelMinMireds" + + - label: + "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds + attribute" + PICS: CC.C.A4010 + wait: "readAttribute" + attribute: "StartUpColorTemperatureMireds" + + - label: "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute" + PICS: CC.C.A0010 + wait: "readAttribute" + attribute: "NumberOfPrimaries" + + - label: "DUT reads from the TH the (0x0011) Primary1X attribute" + PICS: CC.C.A0011 + wait: "readAttribute" + attribute: "Primary1X" + + - label: "DUT reads from the TH the (0x0012) Primary1Y attribute" + PICS: CC.C.A0012 + wait: "readAttribute" + attribute: "Primary1Y" + + - label: "DUT reads from the TH the (0x0013) Primary1Intensity attribute" + PICS: CC.C.A0013 + wait: "readAttribute" + attribute: "Primary1Intensity" + + - label: "DUT reads from the TH the (0x0015) Primary2X attribute" + PICS: CC.C.A0015 + wait: "readAttribute" + attribute: "Primary2X" + + - label: "DUT reads from the TH the (0x0016) Primary2Y attribute" + PICS: CC.C.A0016 + wait: "readAttribute" + attribute: "Primary2Y" + + - label: "DUT reads from the TH the (0x0017) Primary2Intensity attribute" + PICS: CC.C.A0017 + wait: "readAttribute" + attribute: "Primary2Intensity" + + - label: "DUT reads from the TH the (0x0019) Primary3X attribute" + PICS: CC.C.A0019 + wait: "readAttribute" + attribute: "Primary3X" + + - label: "DUT reads from the TH the (0x001a) Primary3Y attribute" + PICS: CC.C.A001a + wait: "readAttribute" + attribute: "Primary3Y" + + - label: "DUT reads from the TH the (0x001b) Primary3Intensity attribute" + PICS: CC.C.A001b + wait: "readAttribute" + attribute: "Primary3Intensity" + + - label: "DUT reads from the TH the (0x0020) Primary4X attribute" + PICS: CC.C.A0020 + wait: "readAttribute" + attribute: "Primary4X" + + - label: "DUT reads from the TH the (0x0021) Primary4Y attribute" + PICS: CC.C.A0021 + wait: "readAttribute" + attribute: "Primary4Y" + + - label: "DUT reads from the TH the (0x0022) Primary4Intensity attribute" + PICS: CC.C.A0022 + wait: "readAttribute" + attribute: "Primary4Intensity" + + - label: "DUT reads from the TH the (0x0024) Primary5X attribute" + PICS: CC.C.A0024 + wait: "readAttribute" + attribute: "Primary5X" + + - label: "DUT reads from the TH the (0x0025) Primary5Y attribute" + PICS: CC.C.A0025 + wait: "readAttribute" + attribute: "Primary5Y" + + - label: "DUT reads from the TH the (0x0026) Primary5Intensity attribute" + PICS: CC.C.A0026 + wait: "readAttribute" + attribute: "Primary5Intensity" + + - label: "DUT reads from the TH the (0x0028) Primary6X attribute" + PICS: CC.C.A0028 + wait: "readAttribute" + attribute: "Primary6X" + + - label: "DUT reads from the TH the (0x0029) Primary6Y attribute" + PICS: CC.C.A0029 + wait: "readAttribute" + attribute: "Primary6Y" + + - label: "DUT reads from the TH the (0x002a) Primary6Intensity attribute" + PICS: CC.C.A002a + wait: "readAttribute" + attribute: "Primary6Intensity" + + - label: "DUT reads from the TH the Optional (0x0030) WhitePointX attribute" + PICS: CC.C.A0030 + wait: "readAttribute" + attribute: "WhitePointX" + + - label: "DUT reads from the TH the Optional (0x0031) WhitePointY attribute" + PICS: CC.C.A0031 + wait: "readAttribute" + attribute: "WhitePointY" + + - label: + "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute" + PICS: CC.C.A0032 + wait: "readAttribute" + attribute: "ColorPointRX" + + - label: + "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute" + PICS: CC.C.A0033 + wait: "readAttribute" + attribute: "ColorPointRY" + + - label: + "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity + attribute" + PICS: CC.C.A0034 + wait: "readAttribute" + attribute: "ColorPointRIntensity" + + - label: + "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute" + PICS: CC.C.A0036 + wait: "readAttribute" + attribute: "ColorPointGX" + + - label: + "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute" + PICS: CC.C.A0037 + wait: "readAttribute" + attribute: "ColorPointGY" + + - label: + "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity + attribute" + PICS: CC.C.A0038 + wait: "readAttribute" + attribute: "ColorPointGIntensity" + + - label: + "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute" + PICS: CC.C.A003a + wait: "readAttribute" + attribute: "ColorPointBX" + + - label: + "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute" + PICS: CC.C.A003b + wait: "readAttribute" + attribute: "ColorPointBY" + + - label: + "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity + attribute" + PICS: CC.C.A003c + wait: "readAttribute" + attribute: "ColorPointBIntensity" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml index 67f74654fe4c40..64f22a5932f413 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml @@ -116,8 +116,8 @@ tests: value: 1 - name: "StepSize" value: - ( ColorTempPhysicalMinMiredsValue + - ColorTempPhysicalMaxMiredsValue ) / 2 + ( ColorTempPhysicalMaxMiredsValue - + ColorTempPhysicalMinMiredsValue ) / 2 - name: "ColorTemperatureMinimumMireds" value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_5.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_5.yaml new file mode 100644 index 00000000000000..438cb1312a07c4 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_CC_6_5.yaml @@ -0,0 +1,213 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: + 25.3.18. [TC-CC-6.5] Color Temperature StartUpColorTemperatureMireds + functionality with server as DUT + +PICS: + - CC.S + +config: + nodeId: 0x12344321 + cluster: "Color Control" + endpoint: 1 + +tests: + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH writes 0 to the Options attribute" + PICS: CC.S.F04 && CC.S.A000f + command: "writeAttribute" + attribute: "Options" + arguments: + value: 0 + + - label: "TH sends On command to DUT" + PICS: OO.S.C01.Rsp && CC.S.F04 + cluster: "On/Off" + command: "On" + + - label: "TH reads ColorTemperatureMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A0007 + command: "readAttribute" + attribute: "ColorTemperatureMireds" + response: + constraints: + type: int16u + minValue: 0 + maxValue: 65279 + + - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A400b + command: "readAttribute" + attribute: "ColorTempPhysicalMinMireds" + response: + constraints: + type: int16u + minValue: 0 + maxValue: 65279 + + - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A400c + command: "readAttribute" + attribute: "ColorTempPhysicalMaxMireds" + response: + constraints: + type: int16u + minValue: 0 + maxValue: 65279 + + - label: "TH reads from the DUT the StartUpColorTemperatureMireds attribute" + PICS: CC.S.A4010 && CC.S.F04 + command: "readAttribute" + attribute: "StartUpColorTemperatureMireds" + response: + constraints: + type: int16u + minValue: 0 + maxValue: 65279 + + - label: + "TH writes to StartUpColorTemperatureMireds attribute with value + StartUpColorTemperatureMireds" + verification: | + ./chip-tool colorcontrol write start-up-color-temperature-mireds 32639 1 1 + + [1684869285516] [29746:343264] [DMG] WriteResponseMessage = + [1684869285516] [29746:343264] [DMG] { + [1684869285516] [29746:343264] [DMG] AttributeStatusIBs = + [1684869285516] [29746:343264] [DMG] [ + [1684869285516] [29746:343264] [DMG] AttributeStatusIB = + [1684869285516] [29746:343264] [DMG] { + [1684869285516] [29746:343264] [DMG] AttributePathIB = + [1684869285516] [29746:343264] [DMG] { + [1684869285516] [29746:343264] [DMG] Endpoint = 0x1, + [1684869285516] [29746:343264] [DMG] Cluster = 0x300, + [1684869285516] [29746:343264] [DMG] Attribute = 0x0000_4010, + [1684869285516] [29746:343264] [DMG] } + [1684869285516] [29746:343264] [DMG] + [1684869285516] [29746:343264] [DMG] StatusIB = + [1684869285516] [29746:343264] [DMG] { + [1684869285516] [29746:343264] [DMG] status = 0x00 (SUCCESS), + [1684869285516] [29746:343264] [DMG] }, + [1684869285516] [29746:343264] [DMG] + [1684869285516] [29746:343264] [DMG] }, + [1684869285516] [29746:343264] [DMG] + [1684869285516] [29746:343264] [DMG] ], + [1684869285516] [29746:343264] [DMG] + [1684869285516] [29746:343264] [DMG] InteractionModelRevision = 1 + [1684869285516] [29746:343264] [DMG] } + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP && CC.S.A4010 && CC.S.F04 + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "TH reads StartUpColorTemperatureMireds attribute from DUT" + PICS: CC.S.A4010 && CC.S.F04 + command: "readAttribute" + attribute: "StartUpColorTemperatureMireds" + response: + saveAs: StartUpColorTemperatureMiredsValue + constraints: + type: int16u + minValue: 0 + maxValue: 65279 + + - label: + "Verify that the DUT response contains StartUpColorTemperatureMireds + that matches the StartUpColorTemperatureMireds set in Step 2a" + PICS: CC.S.A4010 && CC.S.F04 && PICS_SKIP_SAMPLE_APP + verification: | + verify StartUpColorTemperatureMireds matches the StartUpColorTemperatureMireds set in Step 2a, if not fail the step. + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "Reboot target device" + PICS: PICS_SDK_CI_ONLY + cluster: "SystemCommands" + endpoint: 0 + command: "Reboot" + + - label: "Reboot target device(DUT)" + verification: | + Did the DUT successfully reboot? + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Please reboot the DUT and enter 'y' after DUT starts" + - name: "expectedValue" + value: "y" + + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH reads from the DUT the StartUpColorTemperatureMireds attribute" + PICS: CC.S.F04 && CC.S.A4010 + command: "readAttribute" + attribute: "StartUpColorTemperatureMireds" + response: + value: StartUpColorTemperatureMiredsValue + + - label: "TH reads ColorTemperatureMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A0007 + command: "readAttribute" + attribute: "ColorTemperatureMireds" + response: + value: StartUpColorTemperatureMiredsValue + + - label: "TH reads ColorMode attribute from DUT" + PICS: CC.S.F04 && CC.S.A0008 + command: "readAttribute" + attribute: "ColorMode" + response: + value: 2 + constraints: + minValue: 0 + maxValue: 2 + + - label: "TH reads EnhancedColorMode attribute from DUT" + PICS: CC.S.F04 && CC.S.A4001 + command: "readAttribute" + attribute: "EnhancedColorMode" + response: + value: 2 + constraints: + minValue: 0 + maxValue: 3 diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml index 55199f18f15799..1381f68c02f286 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml @@ -37,7 +37,7 @@ tests: - name: "nodeId" value: nodeId - - label: "Reads the ChannelList attribute" + - label: "TH reads the ChannelList attribute from the DUT" PICS: CHANNEL.S.A0000 command: "readAttribute" attribute: "ChannelList" @@ -45,7 +45,9 @@ tests: constraints: type: list - - label: "TH sends a ChangeChannelByNumber command" + - label: + "TH sends a ChangeChannelByNumber command to the DUT with channel + information (major and minor numbers) from the list in step 1" PICS: CHANNEL.S.C02.Rsp command: "ChangeChannelByNumber" arguments: @@ -66,7 +68,7 @@ tests: - name: "expectedValue" value: "y" - - label: "Reads the CurrentChannel attribute" + - label: "TH reads the CurrentChannel attribute from the DUT" PICS: CHANNEL.S.A0002 && CHANNEL.S.C02.Rsp command: "readAttribute" attribute: "CurrentChannel" diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml index feb1ed3f5f3524..e660cd253142fb 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml @@ -52,7 +52,7 @@ tests: command: "readAttribute" attribute: "Lineup" - - label: "Reads the ChannelList attribute from the DUT" + - label: "TH reads the ChannelList attribute from the DUT" PICS: CHANNEL.S.A0000 command: "readAttribute" attribute: "ChannelList" @@ -60,14 +60,14 @@ tests: constraints: type: list - - label: "Reads the CurrentChannel attribute from the DUT" + - label: "TH reads the CurrentChannel attribute from the DUT" PICS: CHANNEL.S.A0002 command: "readAttribute" attribute: "CurrentChannel" response: value: { MajorNumber: majornumber, MinorNumber: minornumber } - - label: "Sends a SkipChannel command to the DUT" + - label: "TH sends a SkipChannel command to the DUT with a value of 1" PICS: CHANNEL.S.C03.Rsp command: "SkipChannel" arguments: @@ -86,7 +86,7 @@ tests: - name: "expectedValue" value: "y" - - label: "Reads the CurrentChannel attribute from the DUT" + - label: "TH reads the CurrentChannel attribute from the DUT" PICS: CHANNEL.S.A0002 && CHANNEL.S.C03.Rsp command: "readAttribute" attribute: "CurrentChannel" diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_1_1.yaml index 71e40d75a04a1c..73cc3b74c5f943 100644 --- a/src/app/tests/suites/certification/Test_TC_DGSW_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGSW_1_1.yaml @@ -149,7 +149,7 @@ tests: value: "y" - label: "TH reads EventList from DUT" - PICS: DGSW.S.F00 && DGSW.S.Afffa + PICS: DGSW.S.E00 && DGSW.S.Afffa command: "readAttribute" attribute: "EventList" response: @@ -158,7 +158,7 @@ tests: contains: [0] - label: "TH reads EventList from DUT" - PICS: " !DGSW.S.F00 && DGSW.S.Afffa " + PICS: " !DGSW.S.E00 && DGSW.S.Afffa " command: "readAttribute" attribute: "EventList" response: diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml deleted file mode 100644 index 726178c2f0ec99..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml +++ /dev/null @@ -1,563 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 50.3.1. [TC-DGTHREAD-3.1] Attributes [DUT- Client] - -PICS: - - DGTHREAD.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "Commission DUT to TH" - verification: | - - disabled: true - - - label: "DUT reads Channel attribute value from TH" - PICS: DGTHREAD.C.A0000 - verification: | - ./chip-tool threadnetworkdiagnostics read channel 54 0 - - Verify "channel response" on the TH(All-cluster-app) Log: - - - D: 499352 [EM]Handling via exchange: 37813r, Delegate: 0x200070ec - D: 499358 [IM]Received Read request - D: 499362 [DMG]IM RH moving to [GeneratingReports] - D: 499367 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 499375 [DMG] Cluster 35, Attribute 0 is dirty - D: 499381 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0000 (expanded=0) - exchanr - D: 499492 [EM]Found matching exchange: 37813r, Delegate: (nil) - D: 499498 [EM]Rxd Ack; Removing MessageCounter:30700790 from Retrans Table on exchange 37813r - D: 499506 [EM]Removed CHIP MessageCounter:30700790 from RetransTable on exchange 37813r - disabled: true - - - label: "DUT reads RoutingRole attribute value from TH" - PICS: DGTHREAD.C.A0001 - verification: | - ./chip-tool threadnetworkdiagnostics read routing-role 54 0 - - Verify "RoutingRole response" on the TH(All-cluster-app) Log: - - D: 857084 [EM]Handling via exchange: 46068r, Delegate: 0x200070ec - D: 857090 [IM]Received Read request - D: 857094 [DMG]IM RH moving to [GeneratingReports] - D: 857099 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 857108 [DMG] Cluster 35, Attribute 1 is dirty - D: 857113 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0001 (expanded=0) - D: 857122 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads NetworkName attribute value from TH." - PICS: DGTHREAD.C.A0002 - verification: | - ./chip-tool threadnetworkdiagnostics read network-name 54 0 - - Verify "NetworkName response" on the TH(All-cluster-app) Log: - - D: 906029 [EM]Handling via exchange: 28293r, Delegate: 0x200070ec - D: 906035 [IM]Received Read request - D: 906039 [DMG]IM RH moving to [GeneratingReports] - D: 906043 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 906052 [DMG] Cluster 35, Attribute 2 is dirty - D: 906057 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0002 (expanded=0) - D: 906066 [DMG] Sending report (payload has 51 bytes)... - disabled: true - - - label: "DUT reads PanId attribute value from TH." - PICS: DGTHREAD.C.A0003 - verification: | - ./chip-tool threadnetworkdiagnostics read pan-id 54 0 - - Verify "PanId response" on the TH(All-cluster-app) Log: - - D: 967006 [EM]Handling via exchange: 44794r, Delegate: 0x200070ec - D: 967011 [IM]Received Read request - D: 967015 [DMG]IM RH moving to [GeneratingReports] - D: 967020 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 967029 [DMG] Cluster 35, Attribute 3 is dirty - D: 967034 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0003 (expanded=0) - D: 967043 [DMG] Sending report (payload has 37 bytes)... - disabled: true - - - label: "DUT reads ExtendedPanId attribute value from TH." - PICS: DGTHREAD.C.A0004 - verification: | - ./chip-tool threadnetworkdiagnostics read extended-pan-id 54 0 - - Verify "ExtendedPanId response" on the TH(All-cluster-app) Log: - - D: 992402 [EM]Handling via exchange: 49565r, Delegate: 0x200070ec - D: 992409 [IM]Received Read request - D: 992413 [DMG]IM RH moving to [GeneratingReports] - D: 992418 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 992427 [DMG] Cluster 35, Attribute 4 is dirty - D: 992432 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0004 (expanded=0) - D: 992441 [DMG] Sending report (payload has 43 bytes)... - disabled: true - - - label: "DUT reads MeshLocalPrefix attribute value from TH." - PICS: DGTHREAD.C.A0005 - verification: | - ./chip-tool threadnetworkdiagnostics read mesh-local-prefix 54 0 - - Verify "MeshLocalPrefix response" on the TH(All-cluster-app) Log: - - D: 1037614 [EM]Handling via exchange: 42980r, Delegate: 0x200070ec - D: 1037620 [IM]Received Read request - D: 1037624 [DMG]IM RH moving to [GeneratingReports] - D: 1037628 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1037637 [DMG] Cluster 35, Attribute 5 is dirty - D: 1037642 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0005 (expanded=0) - D: 1037652 [DMG] Sending report (payload has 45 bytes)... - disabled: true - - - label: "DUT reads OverrunCount attribute value from TH." - PICS: DGTHREAD.C.A0006 - verification: | - ./chip-tool threadnetworkdiagnostics read overrun-count 54 0 - - Verify "OverrunCount response" on the TH(All-cluster-app) Log: - - D: 1085229 [SC]Allocated SecureSession (0x20003680) - waiting for Sigma1 msg - I: 1085236 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:86023668 on exchanr - D: 1085246 [EM]Handling via exchange: 16079r, Delegate: 0x200070ec - D: 1085252 [IM]Received Read request - D: 1085256 [DMG]IM RH moving to [GeneratingReports] - D: 1085261 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1085270 [DMG] Cluster 35, Attribute 6 is dirty - D: 1085275 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0006 (expanded=0) - D: 1085284 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads NeighborTable attribute value from TH." - PICS: DGTHREAD.C.A0007 - verification: | - ./chip-tool threadnetworkdiagnostics read neighbor-table 54 0 - - Verify "NeighborTableList response" on the TH(All-cluster-app) Log: - - D: 1133597 [SC]Allocated SecureSession (0x20003738) - waiting for Sigma1 msg - I: 1133606 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:213814779 on exchar - D: 1133616 [EM]Handling via exchange: 57703r, Delegate: 0x200070ec - D: 1133622 [IM]Received Read request - D: 1133626 [DMG]IM RH moving to [GeneratingReports] - D: 1133631 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1133640 [DMG] Cluster 35, Attribute 7 is dirty - D: 1133645 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0007 (expanded=0) - D: 1133654 [DMG] Sending report (payload has 110 bytes).. - disabled: true - - - label: "DUT reads RouteTable attribute value from TH." - PICS: DGTHREAD.C.A0008 - verification: | - ./chip-tool threadnetworkdiagnostics read route-table 54 0 - - Verify "RouteTableList response" on the TH(All-cluster-app) Log: - - D: 1193349 [SC]Allocated SecureSession (0x200037f0) - waiting for Sigma1 msg - I: 1193357 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:137272867 on exchar - D: 1193367 [EM]Handling via exchange: 5101r, Delegate: 0x200070ec - D: 1193372 [IM]Received Read request - D: 1193376 [DMG]IM RH moving to [GeneratingReports] - D: 1193381 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1193390 [DMG] Cluster 35, Attribute 8 is dirty - D: 1193395 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0008 (expanded=0) - D: 1193405 [DMG] Sending report (payload has 100 bytes)... - disabled: true - - - label: "DUT reads PartitionId attribute value from TH" - PICS: DGTHREAD.C.A0009 - verification: | - ./chip-tool threadnetworkdiagnostics read partition-id 54 0 - - Verify "PartitionId response" on the TH(All-cluster-app) Log: - - D: 1251223 [SC]Allocated SecureSession (0x20002c70) - waiting for Sigma1 msg - I: 1251230 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:191202632 on exchar - D: 1251241 [EM]Handling via exchange: 25875r, Delegate: 0x200070ec - D: 1251247 [IM]Received Read request - D: 1251251 [DMG]IM RH moving to [GeneratingReports] - D: 1251256 [EM]Retransmitting MessageCounter:53367772 on exchange 25874r Send Cnt 1 - I: 1251265 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367772 to 0x0000000000000000c - D: 1251279 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1251288 [DMG] Cluster 35, Attribute 9 is dirty - D: 1251294 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0009 (expanded=0) - D: 1251303 [DMG] Sending report (payload has 39 bytes)... - disabled: true - - - label: "DUT reads Weighting attribute value from TH" - PICS: DGTHREAD.C.A000a - verification: | - ./chip-tool threadnetworkdiagnostics read weighting 54 0 - - Verify "weighting response" on the TH(All-cluster-app) Log: - - D: 1299900 [SC]Allocated SecureSession (0x20002de0) - waiting for Sigma1 msg - I: 1299907 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:55560128 on exchanr - D: 1299917 [EM]Handling via exchange: 45722r, Delegate: 0x200070ec - D: 1299923 [IM]Received Read request - D: 1299927 [DMG]IM RH moving to [GeneratingReports] - D: 1299932 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1299941 [DMG] Cluster 35, Attribute a is dirty - D: 1299946 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000A (expanded=0) - D: 1299955 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads DataVersion attribute value from TH" - PICS: DGTHREAD.C.A000b - verification: | - ./chip-tool threadnetworkdiagnostics read data-version 54 0 - - Verify "DataVersion response" on the TH(All-cluster-app) Log: - - I: 1354333 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367780 to 0x0000000000000000c - I: 1354350 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:157453720 on exchar - D: 1354362 [EM]Handling via exchange: 38823r, Delegate: 0x200070ec - D: 1354368 [IM]Received Read request - D: 1354372 [DMG]IM RH moving to [GeneratingReports] - D: 1354376 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1354385 [DMG] Cluster 35, Attribute b is dirty - D: 1354390 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000B (expanded=0) - D: 1354400 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads StableDataVersion attribute value from TH" - PICS: DGTHREAD.C.A000c - verification: | - ./chip-tool threadnetworkdiagnostics read stable-data-version 54 0 - - Verify "StableDataVersion response" on the TH(All-cluster-app) Log: - - - I: 1392842 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367784 to 0x0000000000000000c - I: 1392857 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:43531416 on exchanr - D: 1392867 [EM]Handling via exchange: 51957r, Delegate: 0x200070ec - D: 1392875 [IM]Received Read request - D: 1392879 [DMG]IM RH moving to [GeneratingReports] - D: 1392884 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1392894 [DMG] Cluster 35, Attribute c is dirty - D: 1392900 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000C (expanded=0) - D: 1392909 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads LeaderRouterId attribute value from TH" - PICS: DGTHREAD.C.A000d - verification: | - ./chip-tool threadnetworkdiagnostics read leader-router-id 54 0 - - Verify "LeaderRouterId response" on the TH(All-cluster-app) Log: - - - D: 1455932 [SC]Allocated SecureSession (0x20002f50) - waiting for Sigma1 msg - I: 1455940 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:149451326 on exchar - D: 1455950 [EM]Handling via exchange: 39274r, Delegate: 0x200070ec - D: 1455956 [IM]Received Read request - D: 1455960 [DMG]IM RH moving to [GeneratingReports] - D: 1455965 [EM]Retransmitting MessageCounter:53367788 on exchange 39273r Send Cnt 1 - I: 1455972 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367788 to 0x0000000000000000c - D: 1455988 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1455997 [DMG] Cluster 35, Attribute d is dirty - D: 1456002 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000D (expanded=0) - D: 1456013 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads DetachedRoleCount attribute value from TH" - PICS: DGTHREAD.C.A000e - verification: | - ./chip-tool threadnetworkdiagnostics read detached-role-count 54 0 - - Verify "DetachedRoleCount response" on the TH(All-cluster-app) Log: - - I: 1532319 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367792 to 0x0000000000000000c - I: 1532333 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:268029320 on exchar - D: 1532344 [EM]Handling via exchange: 16217r, Delegate: 0x200070ec - D: 1532350 [IM]Received Read request - D: 1532354 [DMG]IM RH moving to [GeneratingReports] - D: 1532361 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1532371 [DMG] Cluster 35, Attribute e is dirty - D: 1532376 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000E (expanded=0) - D: 1532385 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads ChildRoleCount attribute value from TH" - PICS: DGTHREAD.C.A000f - verification: | - ./chip-tool threadnetworkdiagnostics read child-role-count 54 0 - - Verify "ChildRoleCount response" on the TH(All-cluster-app) Log: - - D: 1566935 [SC]Allocated SecureSession (0x200030c0) - waiting for Sigma1 msg - I: 1566943 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:48367315 on exchanr - D: 1566953 [EM]Handling via exchange: 7022r, Delegate: 0x200070ec - D: 1566958 [IM]Received Read request - D: 1566962 [DMG]IM RH moving to [GeneratingReports] - D: 1566967 [EM]Retransmitting MessageCounter:53367796 on exchange 7021r Send Cnt 1 - I: 1566975 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367796 to 0x0000000000000000c - D: 1566989 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1566998 [DMG] Cluster 35, Attribute f is dirty - D: 1567005 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_000F (expanded=0) - D: 1567014 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads RouterRoleCount attribute value from TH" - PICS: DGTHREAD.C.A0010 - verification: | - ./chip-tool threadnetworkdiagnostics read router-role-count 54 0 - - Verify "RouterRoleCount response" on the TH(All-cluster-app) Log: - - D: 1600012 [SC]Allocated SecureSession (0x20003178) - waiting for Sigma1 msg - I: 1600020 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:78525212 on exchanr - D: 1600030 [EM]Handling via exchange: 10230r, Delegate: 0x200070ec - D: 1600036 [IM]Received Read request - D: 1600040 [DMG]IM RH moving to [GeneratingReports] - D: 1600045 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1600054 [DMG] Cluster 35, Attribute 10 is dirty - D: 1600059 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0010 (expanded=0) - D: 1600068 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads LeaderRoleCount attribute value from TH" - PICS: DGTHREAD.C.A0011 - verification: | - ./chip-tool threadnetworkdiagnostics read leader-role-count 54 0 - - Verify "LeaderRoleCount response" on the TH(All-cluster-app) Log: - - I: 1712400 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367804 to 0x0000000000000000c - I: 1712415 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:173936026 on exchar - D: 1712425 [EM]Handling via exchange: 56738r, Delegate: 0x200070ec - D: 1712431 [IM]Received Read request - D: 1712436 [DMG]IM RH moving to [GeneratingReports] - D: 1712440 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1712452 [DMG] Cluster 35, Attribute 11 is dirty - D: 1712459 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0011 (expanded=0) - D: 1712468 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads AttachAttemptCount attribute value from TH" - PICS: DGTHREAD.C.A0012 - verification: | - ./chip-tool threadnetworkdiagnostics read attach-attempt-count 54 0 - - Verify "AttachAttemptCount response" on the TH(All-cluster-app) Log: - - D: 1762338 [SC]Allocated SecureSession (0x200032e8) - waiting for Sigma1 msg - I: 1762346 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:45359373 on exchanr - D: 1762356 [EM]Handling via exchange: 7899r, Delegate: 0x200070ec - D: 1762362 [IM]Received Read request - D: 1762366 [DMG]IM RH moving to [GeneratingReports] - D: 1762371 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1762381 [DMG] Cluster 35, Attribute 12 is dirty - D: 1762386 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0012 (expanded=0) - D: 1762395 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads PartitionIdChangeCount attribute value from TH" - PICS: DGTHREAD.C.A0013 - verification: | - ./chip-tool threadnetworkdiagnostics read partition-id-change-count 54 0 - - Verify "PartitionIdChangeCount response" on the TH(All-cluster-app) Log: - - D: 1988080 [SC]Allocated SecureSession (0x200033a0) - waiting for Sigma1 msg - I: 1988087 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:211482637 on exchar - D: 1988097 [EM]Handling via exchange: 39932r, Delegate: 0x200070ec - D: 1988103 [IM]Received Read request - D: 1988107 [DMG]IM RH moving to [GeneratingReports] - D: 1988112 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 1988123 [DMG] Cluster 35, Attribute 13 is dirty - D: 1988128 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0013 (expanded=0) - D: 1988137 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: - "DUT reads BetterPartitionAttachAttemptCount attribute value from TH" - PICS: DGTHREAD.C.A0014 - verification: | - ./chip-tool threadnetworkdiagnostics read better-partition-attach-attempt-count 54 0 - - Verify "BetterPartitionAttachAttemptCount response" on the TH(All-cluster-app) Log: - - D: 2082976 [SC]Allocated SecureSession (0x20003458) - waiting for Sigma1 msg - I: 2082984 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:221024802 on exchar - D: 2082994 [EM]Handling via exchange: 41742r, Delegate: 0x200070ec - D: 2083000 [IM]Received Read request - D: 2083004 [DMG]IM RH moving to [GeneratingReports] - D: 2083009 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2083017 [DMG] Cluster 35, Attribute 14 is dirty - D: 2083023 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0014 (expanded=0) - D: 2083032 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads ParentChangeCount attribute value from TH" - PICS: DGTHREAD.C.A0015 - verification: | - ./chip-tool threadnetworkdiagnostics read parent-change-count 54 0 - - Verify "ParentChangeCount response" on the TH(All-cluster-app) Log: - - D: 2167609 [SC]Allocated SecureSession (0x20003510) - waiting for Sigma1 msg - I: 2167617 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:197446435 on exchar - D: 2167627 [EM]Handling via exchange: 13205r, Delegate: 0x200070ec - D: 2167633 [IM]Received Read request - D: 2167637 [DMG]IM RH moving to [GeneratingReports] - D: 2167642 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2167651 [DMG] Cluster 35, Attribute 15 is dirty - D: 2167656 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0015 (expanded=0) - D: 2167665 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads ActiveTimestamp attribute value from TH" - PICS: DGTHREAD.C.A0038 - verification: | - ./chip-tool threadnetworkdiagnostics read active-timestamp 54 0 - - Verify "ActiveTimestamp response" on the TH(All-cluster-app) Log: - - I: 2257044 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367824 to 0x0000000000000000c - I: 2257059 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:197064524 on exchar - D: 2257070 [EM]Handling via exchange: 61923r, Delegate: 0x200070ec - D: 2257077 [IM]Received Read request - D: 2257083 [DMG]IM RH moving to [GeneratingReports] - D: 2257088 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2257097 [DMG] Cluster 35, Attribute 38 is dirty - D: 2257102 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0038 (expanded=0) - D: 2257113 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads PendingTimestamp attribute value from TH" - PICS: DGTHREAD.C.A0039 - verification: | - ./chip-tool threadnetworkdiagnostics read pending-timestamp 54 0 - - Verify "PendingTimestamp response" on the TH(All-cluster-app) Log: - - D: 2368307 [SC]Allocated SecureSession (0x20003680) - waiting for Sigma1 msg - I: 2368315 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:262013622 on exchar - D: 2368325 [EM]Handling via exchange: 17994r, Delegate: 0x200070ec - D: 2368331 [IM]Received Read request - D: 2368336 [DMG]IM RH moving to [GeneratingReports] - D: 2368341 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2368350 [DMG] Cluster 35, Attribute 39 is dirty - D: 2368355 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_0039 (expanded=0) - D: 2368367 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads Delay attribute value from TH" - PICS: DGTHREAD.C.A003a - verification: | - ./chip-tool threadnetworkdiagnostics read delay 54 0 - - Verify "delay response" on the TH(All-cluster-app) Log: - D: 2395612 [SC]Allocated SecureSession (0x20003738) - waiting for Sigma1 msg - I: 2395619 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:102223401 on exchar - D: 2395629 [EM]Handling via exchange: 39913r, Delegate: 0x200070ec - D: 2395635 [IM]Received Read request - D: 2395639 [DMG]IM RH moving to [GeneratingReports] - D: 2395644 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2395653 [DMG] Cluster 35, Attribute 3a is dirty - D: 2395658 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_003A (expanded=0) - D: 2395670 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "DUT reads SecurityPolicy attribute value from TH" - PICS: DGTHREAD.C.A003b - verification: | - ./chip-tool threadnetworkdiagnostics read security-policy 54 0 - - Verify "SecurityPolicy response" on the TH(All-cluster-app) Log: - - D: 2430403 [SC]Allocated SecureSession (0x200037f0) - waiting for Sigma1 msg - I: 2430410 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:23336336 on exchanr - D: 2430420 [EM]Handling via exchange: 57373r, Delegate: 0x200070ec - D: 2430426 [IM]Received Read request - D: 2430430 [DMG]IM RH moving to [GeneratingReports] - D: 2430437 [EM]Retransmitting MessageCounter:53367836 on exchange 57372r Send Cnt 1 - I: 2430445 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367836 to 0x0000000000000000c - D: 2430459 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2430467 [DMG] Cluster 35, Attribute 3b is dirty - D: 2430473 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_003B (expanded=0) - D: 2430486 [DMG] Sending report (payload has 44 bytes)... - disabled: true - - - label: "DUT reads ChannelPage0Mask attribute value from TH" - PICS: DGTHREAD.C.A003c - verification: | - ./chip-tool threadnetworkdiagnostics read channel-page0mask 54 0 - - Verify "channel-page0mask" on the TH(All-cluster-app) Log: - - I: 2464057 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367840 to 0x0000000000000000c - I: 2464071 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:147354356 on exchar - D: 2464082 [EM]Handling via exchange: 1863r, Delegate: 0x200070ec - D: 2464088 [IM]Received Read request - D: 2464092 [DMG]IM RH moving to [GeneratingReports] - D: 2464099 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2464107 [DMG] Cluster 35, Attribute 3c is dirty - D: 2464113 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_003C (expanded=0) - D: 2464124 [DMG] Sending report (payload has 40 bytes)... - disabled: true - - - label: "DUT reads OperationalDatasetComponents attribute from TH" - PICS: DGTHREAD.C.A003d - verification: | - ./chip-tool threadnetworkdiagnostics read operational-dataset-components 54 0 - - Verify "OperationalDatasetComponents response" on the TH(All-cluster-app) Log: - - D: 2559492 [SC]Allocated SecureSession (0x20002de0) - waiting for Sigma1 msg - D: 2559499 [EM]Retransmitting MessageCounter:53367844 on exchange 11177r Send Cnt 1 - I: 2559507 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367844 to 0x0000000000000000c - I: 2559522 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:72374798 on exchanr - D: 2559532 [EM]Handling via exchange: 11178r, Delegate: 0x200070ec - D: 2559540 [IM]Received Read request - D: 2559544 [DMG]IM RH moving to [GeneratingReports] - D: 2559550 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2559559 [DMG] Cluster 35, Attribute 3d is dirty - D: 2559564 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_003D (expanded=0) - D: 2559576 [DMG] Sending report (payload has 60 bytes)... - disabled: true - - - label: "DUT reads ActiveNetworkFaults attribute value from TH" - PICS: DGTHREAD.C.A003e - verification: | - ./chip-tool threadnetworkdiagnostics read active-network-faults-list 54 0 - - Verify "ActiveNetworkFaultsList response" on the TH(All-cluster-app) Log: - - D: 2608568 [SC]Allocated SecureSession (0x20002d28) - waiting for Sigma1 msg - D: 2608575 [EM]Retransmitting MessageCounter:53367848 on exchange 40328r Send Cnt 1 - I: 2608583 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53367848 to 0x0000000000000000c - I: 2608598 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:83976838 on exchanr - D: 2608608 [EM]Handling via exchange: 40329r, Delegate: 0x200070ec - D: 2608614 [IM]Received Read request - D: 2608618 [DMG]IM RH moving to [GeneratingReports] - D: 2608625 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 2608633 [DMG] Cluster 35, Attribute 3e is dirty - D: 2608639 [DMG]Reading attribute: Cluster=0x0000_0035 Endpoint=0 AttributeId=0x0000_003E (expanded=0) - D: 2608650 [DMG] Sending report (payload has 148 bytes)... - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml new file mode 100644 index 00000000000000..d2d4358b92fda1 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml @@ -0,0 +1,174 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 50.3.1. [TC-DGTHREAD-3.1] Attributes [DUT- Client] + +PICS: + - DGTHREAD.C + +config: + nodeId: 0x12344321 + cluster: "Thread Network Diagnostics" + endpoint: 0 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT reads Channel attribute value from TH" + wait: "readAttribute" + attribute: "Channel" + PICS: DGTHREAD.C.A0000 + + - label: "DUT reads RoutingRole attribute value from TH" + wait: "readAttribute" + attribute: "RoutingRole" + PICS: DGTHREAD.C.A0001 + + - label: "DUT reads NetworkName attribute value from TH" + wait: "readAttribute" + attribute: "NetworkName" + PICS: DGTHREAD.C.A0002 + + - label: "DUT reads PanId attribute value from TH" + wait: "readAttribute" + attribute: "PanId" + PICS: DGTHREAD.C.A0003 + + - label: "DUT reads ExtendedPanId attribute value from TH" + wait: "readAttribute" + attribute: "ExtendedPanId" + PICS: DGTHREAD.C.A0004 + + - label: "DUT reads MeshLocalPrefix attribute value from TH" + wait: "readAttribute" + attribute: "MeshLocalPrefix" + PICS: DGTHREAD.C.A0005 + + - label: "DUT reads OverrunCount attribute value from TH" + wait: "readAttribute" + attribute: "OverrunCount" + PICS: DGTHREAD.C.A0006 + + - label: "DUT reads NeighborTable attribute value from TH" + wait: "readAttribute" + attribute: "NeighborTable" + PICS: DGTHREAD.C.A0007 + + - label: "DUT reads RouteTable attribute value from TH" + wait: "readAttribute" + attribute: "RouteTable" + PICS: DGTHREAD.C.A0008 + + - label: "DUT reads PartitionId attribute value from TH" + wait: "readAttribute" + attribute: "PartitionId" + PICS: DGTHREAD.C.A0009 + + - label: "DUT reads Weighting attribute value from TH" + wait: "readAttribute" + attribute: "Weighting" + PICS: DGTHREAD.C.A000a + + - label: "DUT reads DataVersion attribute value from TH" + wait: "readAttribute" + attribute: "DataVersion" + PICS: DGTHREAD.C.A000b + + - label: "DUT reads StableDataVersion attribute value from TH" + wait: "readAttribute" + attribute: "StableDataVersion" + PICS: DGTHREAD.C.A000c + + - label: "DUT reads LeaderRouterId attribute value from TH" + wait: "readAttribute" + attribute: "LeaderRouterId" + PICS: DGTHREAD.C.A000d + + - label: "DUT reads DetachedRoleCount attribute value from TH" + wait: "readAttribute" + attribute: "DetachedRoleCount" + PICS: DGTHREAD.C.A000e + + - label: "DUT reads ChildRoleCount attribute value from TH" + wait: "readAttribute" + attribute: "ChildRoleCount" + PICS: DGTHREAD.C.A000f + + - label: "DUT reads RouterRoleCount attribute value from TH" + wait: "readAttribute" + attribute: "RouterRoleCount" + PICS: DGTHREAD.C.A0010 + + - label: "DUT reads LeaderRoleCount attribute value from TH" + wait: "readAttribute" + attribute: "LeaderRoleCount" + PICS: DGTHREAD.C.A0011 + + - label: "DUT reads AttachAttemptCount attribute value from TH" + wait: "readAttribute" + attribute: "AttachAttemptCount" + PICS: DGTHREAD.C.A0012 + + - label: "DUT reads PartitionIdChangeCount attribute value from TH" + wait: "readAttribute" + attribute: "PartitionIdChangeCount" + PICS: DGTHREAD.C.A0013 + + - label: + "DUT reads BetterPartitionAttachAttemptCount attribute value from TH" + wait: "readAttribute" + attribute: "BetterPartitionAttachAttemptCount" + PICS: DGTHREAD.C.A0014 + + - label: "DUT reads ParentChangeCount attribute value from TH" + wait: "readAttribute" + attribute: "ParentChangeCount" + PICS: DGTHREAD.C.A0015 + + - label: "DUT reads ActiveTimestamp attribute value from TH" + wait: "readAttribute" + attribute: "ActiveTimestamp" + PICS: DGTHREAD.C.A0038 + + - label: "DUT reads PendingTimestamp attribute value from TH" + wait: "readAttribute" + attribute: "PendingTimestamp" + PICS: DGTHREAD.C.A0039 + + - label: "DUT reads Delay attribute value from TH" + wait: "readAttribute" + attribute: "Delay" + PICS: DGTHREAD.C.A003a + + - label: "DUT reads SecurityPolicy attribute value from TH" + wait: "readAttribute" + attribute: "SecurityPolicy" + PICS: DGTHREAD.C.A003b + + - label: "DUT reads ChannelPage0Mask attribute value from TH" + wait: "readAttribute" + attribute: "ChannelPage0Mask" + PICS: DGTHREAD.C.A003c + + - label: "DUT reads OperationalDatasetComponents attribute value from TH" + wait: "readAttribute" + attribute: "OperationalDatasetComponents" + PICS: DGTHREAD.C.A003d + + - label: "DUT reads ActiveNetworkFaults attribute value from TH" + wait: "readAttribute" + attribute: "ActiveNetworkFaultsList" + PICS: DGTHREAD.C.A003e diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml index 6b07de333d504b..992eaa3da0bd23 100644 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml @@ -27,9 +27,9 @@ tests: # cluster: "DelayCommands" # command: "WaitForCommissioning" - - label: "DUT reads TxUnicastCount attribute value from TH" + - label: "DUT reads TxTotalCount attribute value from TH" wait: "readAttribute" - attribute: "TxUnicastCount" + attribute: "TxTotalCount" PICS: DGTHREAD.C.A0016 - label: "DUT reads TxUnicastCount attribute value from TH" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml index af6d2e1c9cd46e..c100d1f8a8284e 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Project CHIP Authors +# Copyright (c) 2023 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: 116.2.1. [TC-DRLK-2.1] Attributes check [DUT - Server] @@ -20,347 +19,199 @@ PICS: config: nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 + cluster: "Door Lock" + endpoint: 1 tests: - - label: "Pre-Conditions" - verification: | - TH is commissioned with the DUT - Lock device is the DUT - disabled: true + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId - label: "TH reads LockState attribute from DUT" PICS: DRLK.S.A0000 - verification: | - ./chip-tool doorlock read lock-state 1 1 - - Verify " LockState " on the TH(Chip-tool) Log: - - [1654673735.820302][3247:3252] CHIP:DMG: SuppressResponse = true, - [1654673735.820328][3247:3252] CHIP:DMG: InteractionModelRevision = 1 - [1654673735.820351][3247:3252] CHIP:DMG: } - [1654673735.820481][3247:3252] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0000 DataVersion: 3738767914 - [1654673735.820565][3247:3252] CHIP:TOO: LockState: 1 - disabled: true + command: "readAttribute" + attribute: "LockState" + response: + saveAs: LockStateValue + constraints: + type: enum8 + minValue: 0 + maxValue: 3 - label: "TH writes LockState attribute as 1" PICS: DRLK.S.A0000 - verification: | - ./chip-tool doorlock write-by-id 0 2 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - - [1653634536.813984][2885:2890] CHIP:DMG: StatusIB = - [1653634536.814041][2885:2890] CHIP:DMG: { - [1653634536.814087][2885:2890] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653634536.814143][2885:2890] CHIP:DMG: }, - [1653634536.814190][2885:2890] CHIP:DMG: - [1653634536.814241][2885:2890] CHIP:DMG: }, - [1653634536.814286][2885:2890] CHIP:DMG: - [1653634536.814333][2885:2890] CHIP:DMG: ], - [1653634536.814378][2885:2890] CHIP:DMG: - [1653634536.814426][2885:2890] CHIP:DMG: InteractionModelRevision = 1 - [1653634536.814461][2885:2890] CHIP:DMG: } - [1653634536.814564][2885:2890] CHIP:TOO: Response Failure: IM Error 0x00000588: General error: 0x88 (UNSUPPORTED_WRITE) - disabled: true + command: "writeAttribute" + attribute: "LockState" + arguments: + value: 1 + response: + error: UNSUPPORTED_WRITE - label: "TH reads LockState attribute from DUT" PICS: DRLK.S.A0000 - verification: | - ./chip-tool doorlock read lock-state 1 1 - - Verify " LockState " on the TH(Chip-tool) Log: - - [1654673735.820302][3247:3252] CHIP:DMG: SuppressResponse = true, - [1654673735.820328][3247:3252] CHIP:DMG: InteractionModelRevision = 1 - [1654673735.820351][3247:3252] CHIP:DMG: } - [1654673735.820481][3247:3252] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0000 DataVersion: 3738767914 - [1654673735.820565][3247:3252] CHIP:TOO: LockState: 1 - disabled: true + command: "readAttribute" + attribute: "LockState" + response: + value: LockStateValue - label: "TH sends a Lock Door command to the DUT." - PICS: DRLK.S.A0000 - verification: | - ./chip-tool doorlock lock-door 1 1 --timedInteractionTimeoutMs 1000 - - Verify "DUT performs the door lock action" on the TH(Chip-tool) Log: - - [1658987280.291023][2735:2740] CHIP:DMG: CommandPathIB = - [1658987280.291057][2735:2740] CHIP:DMG: { - [1658987280.291091][2735:2740] CHIP:DMG: EndpointId = 0x1, - [1658987280.291126][2735:2740] CHIP:DMG: ClusterId = 0x101, - [1658987280.291160][2735:2740] CHIP:DMG: CommandId = 0x0, - [1658987280.291193][2735:2740] CHIP:DMG: }, - [1658987280.291229][2735:2740] CHIP:DMG: - [1658987280.291260][2735:2740] CHIP:DMG: StatusIB = - [1658987280.291294][2735:2740] CHIP:DMG: { - [1658987280.291328][2735:2740] CHIP:DMG: status = 0x00 (SUCCESS), - [1658987280.291360][2735:2740] CHIP:DMG: }, - [1658987280.291393][2735:2740] CHIP:DMG: - [1658987280.291423][2735:2740] CHIP:DMG: }, - [1658987280.291456][2735:2740] CHIP:DMG: - [1658987280.291484][2735:2740] CHIP:DMG: }, - [1658987280.291517][2735:2740] CHIP:DMG: - [1658987280.291541][2735:2740] CHIP:DMG: ], - [1658987280.291570][2735:2740] CHIP:DMG: - [1658987280.291595][2735:2740] CHIP:DMG: InteractionModelRevision = 1 - [1658987280.291618][2735:2740] CHIP:DMG: }, - [1658987280.291675][2735:2740] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0000 Status=0x0 + PICS: DRLK.S.C00.Rsp + command: "LockDoor" + timedInteractionTimeoutMs: 1000 - - - ./chip-tool doorlock read lock-state 1 1 - - Verify " LockState " on the TH(Chip-tool) Log: - - [1658987339.087658][2748:2753] CHIP:DMG: - [1658987339.087687][2748:2753] CHIP:DMG: SuppressResponse = true, - [1658987339.087716][2748:2753] CHIP:DMG: InteractionModelRevision = 1 - [1658987339.087742][2748:2753] CHIP:DMG: } - [1658987339.087894][2748:2753] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0000 DataVersion: 2910399941 - [1658987339.087972][2748:2753] CHIP:TOO: LockState: 1 - disabled: true - - - label: "TH sends a Unlock Door command to the DUT." + - label: "TH reads LockState attribute from DUT" PICS: DRLK.S.A0000 - verification: | - ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 - - Verify "DUT performs the door unlock action" on the TH(Chip-tool) Log: - - [1658987468.977061][2765:2770] CHIP:DMG: CommandPathIB = - [1658987468.977098][2765:2770] CHIP:DMG: { - [1658987468.977136][2765:2770] CHIP:DMG: EndpointId = 0x1, - [1658987468.977177][2765:2770] CHIP:DMG: ClusterId = 0x101, - [1658987468.977216][2765:2770] CHIP:DMG: CommandId = 0x1, - [1658987468.977254][2765:2770] CHIP:DMG: }, - [1658987468.977294][2765:2770] CHIP:DMG: - [1658987468.977328][2765:2770] CHIP:DMG: StatusIB = - [1658987468.977365][2765:2770] CHIP:DMG: { - [1658987468.977402][2765:2770] CHIP:DMG: status = 0x00 (SUCCESS), - [1658987468.977438][2765:2770] CHIP:DMG: }, - [1658987468.977475][2765:2770] CHIP:DMG: - [1658987468.977507][2765:2770] CHIP:DMG: }, - [1658987468.977545][2765:2770] CHIP:DMG: - [1658987468.977573][2765:2770] CHIP:DMG: }, - [1658987468.977607][2765:2770] CHIP:DMG: - [1658987468.977634][2765:2770] CHIP:DMG: ], - [1658987468.977667][2765:2770] CHIP:DMG: - [1658987468.977694][2765:2770] CHIP:DMG: InteractionModelRevision = 1 - [1658987468.977721][2765:2770] CHIP:DMG: }, - [1658987468.977787][2765:2770] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0001 Status=0x0 - - ./chip-tool doorlock read lock-state 1 1 + command: "readAttribute" + attribute: "LockState" + response: + value: 1 - Verify " LockState " on the TH(Chip-tool) Log: + - label: "TH sends a Unlock Door command to the DUT." + PICS: DRLK.S.C01.Rsp + command: "UnlockDoor" + timedInteractionTimeoutMs: 1000 - [1658987519.223710][2773:2778] CHIP:DMG: - [1658987519.223741][2773:2778] CHIP:DMG: SuppressResponse = true, - [1658987519.223772][2773:2778] CHIP:DMG: InteractionModelRevision = 1 - [1658987519.223801][2773:2778] CHIP:DMG: } - [1658987519.223959][2773:2778] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0000 DataVersion: 2910399943 - [1658987519.224042][2773:2778] CHIP:TOO: LockState: 2 - disabled: true + - label: "TH reads LockState attribute from DUT" + PICS: DRLK.S.A0000 + command: "readAttribute" + attribute: "LockState" + response: + value: 2 - label: "Simulate a not fully locked scenario on the DUT." - PICS: DRLK.S.A0000 && DRLK.S.Simulate.NotFullyLocked + PICS: + DRLK.S.A0000 && DRLK.S.Simulate.NotFullyLocked && PICS_SKIP_SAMPLE_APP verification: | vendor will give instructions on how to simulate if applicable and if that is possible, then send the below command to read the lock state attribute. ./chip-tool doorlock read lock-state 1 1 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads LockType attribute from DUT" PICS: DRLK.S.A0001 - verification: | - ./chip-tool doorlock read lock-type 1 1 - - Verify " LockType " on the TH(Chip-tool) Log: - - [1654674031.529115][3262:3268] CHIP:DMG: SuppressResponse = true, - [1654674031.529142][3262:3268] CHIP:DMG: InteractionModelRevision = 1 - [1654674031.529166][3262:3268] CHIP:DMG: } - [1654674031.529297][3262:3268] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0001 DataVersion: 3738767914 - [1654674031.529368][3262:3268] CHIP:TOO: LockType: 0 - disabled: true + command: "readAttribute" + attribute: "LockType" + response: + saveAs: LockTypeValue + constraints: + type: enum8 + minValue: 0 + maxValue: 11 - label: "TH writes LockType attribute as 10" - verification: | - ./chip-tool doorlock write-by-id 1 10 1 1 - - Verify "DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653634731.595327][2943:2948] CHIP:DMG: StatusIB = - [1653634731.595374][2943:2948] CHIP:DMG: { - [1653634731.595419][2943:2948] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653634731.595469][2943:2948] CHIP:DMG: }, - [1653634731.595515][2943:2948] CHIP:DMG: - [1653634731.595555][2943:2948] CHIP:DMG: }, - [1653634731.595603][2943:2948] CHIP:DMG: - [1653634731.595638][2943:2948] CHIP:DMG: ], - [1653634731.595682][2943:2948] CHIP:DMG: - [1653634731.595717][2943:2948] CHIP:DMG: InteractionModelRevision = 1 - [1653634731.595752][2943:2948] CHIP:DMG: } - [1653634731.595841][2943:2948] CHIP:TOO: Response Failure: IM Error 0x00000588: General error: 0x88 (UNSUPPORTED_WRITE) - disabled: true + PICS: DRLK.S.A0001 + command: "writeAttribute" + attribute: "LockType" + arguments: + value: 10 + response: + error: UNSUPPORTED_WRITE - label: "TH reads LockType attribute from DUT" - verification: | - ./chip-tool doorlock read lock-type 1 1 - Verify " LockType " on the TH(Chip-tool) Log: - - [1654674031.529115][3262:3268] CHIP:DMG: SuppressResponse = true, - [1654674031.529142][3262:3268] CHIP:DMG: InteractionModelRevision = 1 - [1654674031.529166][3262:3268] CHIP:DMG: } - [1654674031.529297][3262:3268] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0001 DataVersion: 3738767914 - [1654674031.529368][3262:3268] CHIP:TOO: LockType: 0 - disabled: true + PICS: DRLK.S.A0001 + command: "readAttribute" + attribute: "LockType" + response: + value: LockTypeValue - label: "TH reads ActuatorEnabled attribute from DUT" PICS: DRLK.S.A0002 - verification: | - ./chip-tool doorlock read actuator-enabled 1 1 - Verify " ActuatorEnabled " on the TH(Chip-tool) Log: - - [1654674122.634081][3275:3280] CHIP:DMG: SuppressResponse = true, - [1654674122.634110][3275:3280] CHIP:DMG: InteractionModelRevision = 1 - [1654674122.634136][3275:3280] CHIP:DMG: } - [1654674122.634281][3275:3280] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0002 DataVersion: 3738767914 - [1654674122.634332][3275:3280] CHIP:TOO: ActuatorEnabled: TRUE - disabled: true + command: "readAttribute" + attribute: "ActuatorEnabled" + response: + saveAs: ActuatorEnabledValue + constraints: + type: boolean + minValue: 0 + maxValue: 1 - label: "TH writes ActuatorEnabled attribute as 0" - verification: | - ./chip-tool doorlock write-by-id 2 0 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1654674810.194674][3309:3314] CHIP:DMG: StatusIB = - [1654674810.194720][3309:3314] CHIP:DMG: { - [1654674810.194767][3309:3314] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1654674810.194818][3309:3314] CHIP:DMG: }, - [1654674810.194864][3309:3314] CHIP:DMG: - [1654674810.194901][3309:3314] CHIP:DMG: }, - [1654674810.194945][3309:3314] CHIP:DMG: - [1654674810.194979][3309:3314] CHIP:DMG: ], - disabled: true + PICS: DRLK.S.A0002 + command: "writeAttribute" + attribute: "ActuatorEnabled" + arguments: + value: 0 + response: + error: UNSUPPORTED_WRITE - label: "TH reads ActuatorEnabled attribute from DUT" - verification: | - ./chip-tool doorlock read actuator-enabled 1 1 - - Verify " ActuatorEnabled " on the TH(Chip-tool) Log: - - [1654674122.634081][3275:3280] CHIP:DMG: SuppressResponse = true, - [1654674122.634110][3275:3280] CHIP:DMG: InteractionModelRevision = 1 - [1654674122.634136][3275:3280] CHIP:DMG: } - [1654674122.634281][3275:3280] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0002 DataVersion: 3738767914 - [1654674122.634332][3275:3280] CHIP:TOO: ActuatorEnabled: TRUE - disabled: true + PICS: DRLK.S.A0002 + command: "readAttribute" + attribute: "ActuatorEnabled" + response: + value: ActuatorEnabledValue - label: "TH reads DoorState attribute from DUT" PICS: DRLK.S.F05 && DRLK.S.A0003 - verification: | - ./chip-tool doorlock read door-state 1 1 - - Verify " DoorState " on the TH(Chip-tool) Log: - - [1654674869.818923][3316:3321] CHIP:DMG: SuppressResponse = true, - [1654674869.818964][3316:3321] CHIP:DMG: InteractionModelRevision = 1 - [1659354792.817953][18100:18105] CHIP:DMG: } - [1659354792.818130][18100:18105] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0003 DataVersion: 1502189726 - [1659354792.818229][18100:18105] CHIP:TOO: DoorState: 1 - disabled: true + command: "readAttribute" + attribute: "DoorState" + response: + saveAs: DoorStateValue + constraints: + type: enum8 + minValue: 0 + maxValue: 5 - label: "TH writes DoorState attribute as 1" - verification: | - ./chip-tool doorlock write-by-id 3 1 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1654674934.736017][3324:3330] CHIP:DMG: StatusIB = - [1654674934.736062][3324:3330] CHIP:DMG: { - [1654674934.736106][3324:3330] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1654674934.736152][3324:3330] CHIP:DMG: }, - [1654674934.736197][3324:3330] CHIP:DMG: - [1654674934.736237][3324:3330] CHIP:DMG: }, - [1654674934.736280][3324:3330] CHIP:DMG: - [1654674934.736314][3324:3330] CHIP:DMG: ], - [1654674934.736357][3324:3330] CHIP:DMG: - [1654674934.736392][3324:3330] CHIP:DMG: InteractionModelRevision = 1 - [1654674934.736427][3324:3330] CHIP:DMG: } - [1654674934.736522][3324:3330] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true + PICS: DRLK.S.F05 && DRLK.S.A0003 + command: "writeAttribute" + attribute: "DoorState" + arguments: + value: 1 + response: + error: UNSUPPORTED_WRITE - label: "TH reads DoorState attribute from DUT" - verification: | - ./chip-tool doorlock read door-state 1 1 - - Verify " DoorState " on the TH(Chip-tool) Log: - - [1654674869.818923][3316:3321] CHIP:DMG: SuppressResponse = true, - [1654674869.818964][3316:3321] CHIP:DMG: InteractionModelRevision = 1 - [1659354792.817953][18100:18105] CHIP:DMG: } - [1659354792.818130][18100:18105] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0003 DataVersion: 1502189726 - [1659354792.818229][18100:18105] CHIP:TOO: DoorState: 1 - disabled: true + PICS: DRLK.S.F05 && DRLK.S.A0003 + command: "readAttribute" + attribute: "DoorState" + response: + value: DoorStateValue - label: "TH reads DoorOpenEvents attribute from DUT" PICS: DRLK.S.F05 && DRLK.S.A0004 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read door-open-events 1 1 - - Verify " DoorOpenEvents " on the TH(Chip-tool) Log: - - [1654675019.286903][3337:3342] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654675019.286939][3337:3342] CHIP:DMG: }, - [1654675019.286974][3337:3342] CHIP:DMG: - [1654675019.287003][3337:3342] CHIP:DMG: }, - [1654675019.287039][3337:3342] CHIP:DMG: - [1654675019.287067][3337:3342] CHIP:DMG: }, - [1654675019.287100][3337:3342] CHIP:DMG: - [1654675019.287125][3337:3342] CHIP:DMG: ], - [1654675019.287156][3337:3342] CHIP:DMG: - [1654675019.287182][3337:3342] CHIP:DMG: SuppressResponse = true, - [1654675019.287209][3337:3342] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + command: "readAttribute" + attribute: "DoorOpenEvents" + response: + constraints: + type: int32u + minValue: 0 + maxValue: 4294967294 - label: "TH writes DoorOpenEvents attribute as 0" - PICS: DRLK.S.A0004 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 4 0 1 1 - - Verify " DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1653376891.000044][2941:2946] CHIP:DMG: } - [1653376891.000211][2941:2946] CHIP:DMG: - [1653376891.000265][2941:2946] CHIP:DMG: StatusIB = - [1653376891.000315][2941:2946] CHIP:DMG: { - [1653376891.000367][2941:2946] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653376891.000415][2941:2946] CHIP:DMG: }, - [1653376891.000463][2941:2946] CHIP:DMG: - [1653376891.000505][2941:2946] CHIP:DMG: }, - [1653376891.000552][2941:2946] CHIP:DMG: - [1653376891.000587][2941:2946] CHIP:DMG: ], - [1653376891.000632][2941:2946] CHIP:DMG: - [1653376891.000669][2941:2946] CHIP:DMG: InteractionModelRevision = 1 - [1653376891.000703][2941:2946] CHIP:DMG: } - [1653376891.000795][2941:2946] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true - + PICS: DRLK.S.A0004.Write + command: "writeAttribute" + attribute: "DoorOpenEvents" + arguments: + value: 0 + + #- label: "TH reads DoorOpenEvents attribute from DUT" + # PICS: DRLK.S.A0004.Write + # command: "readAttribute" + # attribute: "DoorOpenEvents" + # response: + # value: 10 + + #Test plan issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/2863 - label: "TH reads DoorOpenEvents attribute from DUT" + PICS: DRLK.S.A0004.Write && PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome ./chip-tool doorlock read door-open-events 1 1 - Verify " DoorOpenEvents " on the TH(Chip-tool) Log: + Via the TH (chip-tool), verify that the DoorOpenEvents attribute value as 10. [1654675019.286903][3337:3342] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), [1654675019.286939][3337:3342] CHIP:DMG: }, @@ -373,61 +224,48 @@ tests: [1654675019.287156][3337:3342] CHIP:DMG: [1654675019.287182][3337:3342] CHIP:DMG: SuppressResponse = true, [1654675019.287209][3337:3342] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads DoorClosedEvents attribute from DUT" PICS: DRLK.S.F05 && DRLK.S.A0005 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read door-closed-events 1 1 - - Verify " DoorClosedEvents " on the TH(Chip-tool) Log: - - [1654675103.637778][3346:3351] CHIP:DMG: StatusIB = - [1654675103.637816][3346:3351] CHIP:DMG: { - [1654675103.637853][3346:3351] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654675103.637886][3346:3351] CHIP:DMG: }, - [1654675103.637923][3346:3351] CHIP:DMG: - [1654675103.637956][3346:3351] CHIP:DMG: }, - [1654675103.637994][3346:3351] CHIP:DMG: - [1654675103.638021][3346:3351] CHIP:DMG: }, - [1654675103.638054][3346:3351] CHIP:DMG: - [1654675103.638078][3346:3351] CHIP:DMG: ], - [1654675103.638109][3346:3351] CHIP:DMG: - [1654675103.638133][3346:3351] CHIP:DMG: SuppressResponse = true, - [1654675103.638159][3346:3351] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + command: "readAttribute" + attribute: "DoorClosedEvents" + response: + constraints: + type: int32u + minValue: 0 + maxValue: 4294967294 - label: "TH writes DoorClosedEvents attribute as 0" - PICS: DRLK.S.A0005 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 5 0 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: - - [1654675152.592730][3355:3360] CHIP:DMG: StatusIB = - [1654675152.592863][3355:3360] CHIP:DMG: { - [1654675152.592913][3355:3360] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654675152.592952][3355:3360] CHIP:DMG: }, - [1654675152.592991][3355:3360] CHIP:DMG: - [1654675152.593024][3355:3360] CHIP:DMG: }, - [1654675152.593061][3355:3360] CHIP:DMG: - [1654675152.593090][3355:3360] CHIP:DMG: ], - [1654675152.593126][3355:3360] CHIP:DMG: - [1654675152.593155][3355:3360] CHIP:DMG: InteractionModelRevision = 1 - [1654675152.593184][3355:3360] CHIP:DMG: } - disabled: true - - - label: "TH reads DoorClosedEvents attribute from DUT" + PICS: DRLK.S.A0005.Write + command: "writeAttribute" + attribute: "DoorClosedEvents" + arguments: + value: 0 + + #- label: "TH reads DoorClosedEvents attribute from DUT" + # PICS: DRLK.S.A0005.Write + # command: "readAttribute" + # attribute: "DoorClosedEvents" + # response: + # value: 11 + + #Test plan issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/2863 + - label: "TH reads DoorOpenEvents attribute from DUT" + PICS: DRLK.S.A0005.Write && PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome ./chip-tool doorlock read door-closed-events 1 1 - Verify " DoorClosedEvents " on the TH(Chip-tool) Log: + Via the TH (chip-tool), verify that the DoorClosedEvents attribute value as 11. [1654675103.637778][3346:3351] CHIP:DMG: StatusIB = [1654675103.637816][3346:3351] CHIP:DMG: { @@ -442,531 +280,328 @@ tests: [1654675103.638109][3346:3351] CHIP:DMG: [1654675103.638133][3346:3351] CHIP:DMG: SuppressResponse = true, [1654675103.638159][3346:3351] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads OpenPeriod attribute from DUT" PICS: DRLK.S.F05 && DRLK.S.A0006 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read open-period 1 1 - - Verify " OpenPeriod " on the TH(Chip-tool) Log: - - [1653377163.004837][3008:3013] CHIP:DMG: StatusIB = - [1653377163.004887][3008:3013] CHIP:DMG: { - [1653377163.004932][3008:3013] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653377163.004983][3008:3013] CHIP:DMG: }, - [1653377163.005028][3008:3013] CHIP:DMG: - [1653377163.005072][3008:3013] CHIP:DMG: }, - [1653377163.005123][3008:3013] CHIP:DMG: - [1653377163.005165][3008:3013] CHIP:DMG: }, - [1653377163.005210][3008:3013] CHIP:DMG: - [1653377163.005246][3008:3013] CHIP:DMG: ], - [1653377163.005291][3008:3013] CHIP:DMG: - [1653377163.005329][3008:3013] CHIP:DMG: SuppressResponse = true, - [1653377163.005367][3008:3013] CHIP:DMG: InteractionModelRevision = 1 - [1653377163.005402][3008:3013] CHIP:DMG: } - [1653377163.005558][3008:3013] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + command: "readAttribute" + attribute: "OpenPeriod" + response: + constraints: + type: int16u + minValue: 0 + maxValue: 65534 - label: "TH writes OpenPeriod attribute as 2 minutes" PICS: DRLK.S.A0006 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 6 2 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: - - [1653635643.566677][3165:3170] CHIP:DMG: StatusIB = - [1653635643.566722][3165:3170] CHIP:DMG: { - [1653635643.566767][3165:3170] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653635643.566818][3165:3170] CHIP:DMG: }, - [1653635643.566864][3165:3170] CHIP:DMG: - [1653635643.566902][3165:3170] CHIP:DMG: }, - [1653635643.566945][3165:3170] CHIP:DMG: - [1653635643.566980][3165:3170] CHIP:DMG: ], - [1653635643.567024][3165:3170] CHIP:DMG: - [1653635643.567059][3165:3170] CHIP:DMG: InteractionModelRevision = 1 - [1653635643.567093][3165:3170] CHIP:DMG: } - [1653635643.567184][3165:3170] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + command: "writeAttribute" + attribute: "OpenPeriod" + arguments: + value: 2 - label: "TH reads OpenPeriod attribute from DUT" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read open-period 1 1 - - Verify " OpenPeriod " on the TH(Chip-tool) Log: - - [1653377163.004837][3008:3013] CHIP:DMG: StatusIB = - [1653377163.004887][3008:3013] CHIP:DMG: { - [1653377163.004932][3008:3013] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653377163.004983][3008:3013] CHIP:DMG: }, - [1653377163.005028][3008:3013] CHIP:DMG: - [1653377163.005072][3008:3013] CHIP:DMG: }, - [1653377163.005123][3008:3013] CHIP:DMG: - [1653377163.005165][3008:3013] CHIP:DMG: }, - [1653377163.005210][3008:3013] CHIP:DMG: - [1653377163.005246][3008:3013] CHIP:DMG: ], - [1653377163.005291][3008:3013] CHIP:DMG: - [1653377163.005329][3008:3013] CHIP:DMG: SuppressResponse = true, - [1653377163.005367][3008:3013] CHIP:DMG: InteractionModelRevision = 1 - [1653377163.005402][3008:3013] CHIP:DMG: } - [1653377163.005558][3008:3013] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + PICS: DRLK.S.A0006 + command: "readAttribute" + attribute: "OpenPeriod" + response: + value: 2 - label: "TH reads NumberOfTotal UsersSupported attribute from DUT" PICS: DRLK.S.F08 && DRLK.S.A0011 - verification: | - ./chip-tool doorlock read number-of-total-users-supported 1 1 - - Verify " NumberOfTotal UsersSupported " on the TH(Chip-tool) Log: - - [1654679552.707358][3548:3553] CHIP:DMG: SuppressResponse = true, - [1654679552.707396][3548:3553] CHIP:DMG: InteractionModelRevision = 1 - [1654679552.707430][3548:3553] CHIP:DMG: } - [1654679552.707608][3548:3553] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0011 DataVersion: 3738767914 - [1654679552.707699][3548:3553] CHIP:TOO: NumberOfTotalUsersSupported: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfTotalUsersSupported" + response: + saveAs: NumberOfTotalUsersSupportedValue + constraints: + type: int16u + minValue: 0 + maxValue: 65534 - label: "TH writes NumberOfTotal UsersSupported attribute as 20" - verification: | - ./chip-tool doorlock write-by-id 17 20 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653635760.210005][3203:3208] CHIP:DMG: StatusIB = - [1653635760.210051][3203:3208] CHIP:DMG: { - [1653635760.210096][3203:3208] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653635760.210142][3203:3208] CHIP:DMG: }, - [1653635760.210186][3203:3208] CHIP:DMG: - [1653635760.210226][3203:3208] CHIP:DMG: }, - [1653635760.210269][3203:3208] CHIP:DMG: - disabled: true + PICS: DRLK.S.F08 && DRLK.S.A0011 + command: "writeAttribute" + attribute: "NumberOfTotalUsersSupported" + arguments: + value: 20 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfTotal UsersSupported attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-total-users-supported 1 1 - - Verify " NumberOfTotal UsersSupported " on the TH(Chip-tool) Log: - - [1654679552.707358][3548:3553] CHIP:DMG: SuppressResponse = true, - [1654679552.707396][3548:3553] CHIP:DMG: InteractionModelRevision = 1 - [1654679552.707430][3548:3553] CHIP:DMG: } - [1654679552.707608][3548:3553] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0011 DataVersion: 3738767914 - [1654679552.707699][3548:3553] CHIP:TOO: NumberOfTotalUsersSupported: 10 - disabled: true + PICS: DRLK.S.F08 && DRLK.S.A0011 + command: "readAttribute" + attribute: "NumberOfTotalUsersSupported" + response: + value: NumberOfTotalUsersSupportedValue - label: "TH reads NumberOfPINUsersSupported attribute from DUT" PICS: DRLK.S.F00 && DRLK.S.A0012 - verification: | - ./chip-tool doorlock read number-of-pinusers-supported 1 1 - - Verify "NumberOfPINUsersSupported " on the TH(Chip-tool) Log: - - [1654679648.080728][3557:3562] CHIP:DMG: SuppressResponse = true, - [1654679648.080765][3557:3562] CHIP:DMG: InteractionModelRevision = 1 - [1654679648.080799][3557:3562] CHIP:DMG: } - [1654679648.080978][3557:3562] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0012 DataVersion: 3738767914 - [1654679648.081068][3557:3562] CHIP:TOO: NumberOfPINUsersSupported: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfPINUsersSupported" + response: + saveAs: NumberOfPINUsersSupportedValue + constraints: + type: int16u + minValue: 0 + maxValue: 65534 - label: "TH writes NumberOfPINUsersSupported attribute as 25" - verification: | - ./chip-tool doorlock write-by-id 18 25 1 1 - - Verify "DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1653635935.885575][3265:3270] CHIP:DMG: StatusIB = - [1653635935.885605][3265:3270] CHIP:DMG: { - [1653635935.885635][3265:3270] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653635935.885666][3265:3270] CHIP:DMG: }, - [1653635935.885696][3265:3270] CHIP:DMG: - [1653635935.885721][3265:3270] CHIP:DMG: }, - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0012 + command: "writeAttribute" + attribute: "NumberOfPINUsersSupported" + arguments: + value: 25 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfPINUsersSupported attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-pinusers-supported 1 1 - - Verify "NumberOfPINUsersSupported " on the TH(Chip-tool) Log: - - [1654679648.080728][3557:3562] CHIP:DMG: SuppressResponse = true, - [1654679648.080765][3557:3562] CHIP:DMG: InteractionModelRevision = 1 - [1654679648.080799][3557:3562] CHIP:DMG: } - [1654679648.080978][3557:3562] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0012 DataVersion: 3738767914 - [1654679648.081068][3557:3562] CHIP:TOO: NumberOfPINUsersSupported: 10 - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0012 + command: "readAttribute" + attribute: "NumberOfPINUsersSupported" + response: + value: NumberOfPINUsersSupportedValue - label: "TH reads NumberOfRFID UsersSupported attribute from DUT" PICS: DRLK.S.F01 && DRLK.S.A0013 - verification: | - ./chip-tool doorlock read number-of-rfidusers-supported 1 1 - - Verify "NumberOfRFID UsersSupported " on the TH(Chip-tool) Log: - - [1654679746.726086][3567:3572] CHIP:DMG: SuppressResponse = true, - [1654679746.726122][3567:3572] CHIP:DMG: InteractionModelRevision = 1 - [1654679746.726153][3567:3572] CHIP:DMG: } - [1654679746.726320][3567:3572] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0013 DataVersion: 3738767914 - [1654679746.726405][3567:3572] CHIP:TOO: NumberOfRFIDUsersSupported: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfRFIDUsersSupported" + response: + saveAs: NumberOfRFIDUsersSupportedValue + constraints: + type: int16u + minValue: 0 + maxValue: 65534 - label: "TH writes NumberOfRFID UsersSupported attribute as 30" - verification: | - ./chip-tool doorlock write-by-id 19 30 1 1 - - Verify "DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1653636030.425594][3289:3294] CHIP:DMG: StatusIB = - [1653636030.425635][3289:3294] CHIP:DMG: { - [1653636030.425675][3289:3294] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636030.425720][3289:3294] CHIP:DMG: }, - [1653636030.425760][3289:3294] CHIP:DMG: - [1653636030.425796][3289:3294] CHIP:DMG: }, - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A0013 + command: "writeAttribute" + attribute: "NumberOfRFIDUsersSupported" + arguments: + value: 30 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfRFID UsersSupported attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-rfidusers-supported 1 1 - - Verify "NumberOfRFID UsersSupported " on the TH(Chip-tool) Log: - - [1654679746.726086][3567:3572] CHIP:DMG: SuppressResponse = true, - [1654679746.726122][3567:3572] CHIP:DMG: InteractionModelRevision = 1 - [1654679746.726153][3567:3572] CHIP:DMG: } - [1654679746.726320][3567:3572] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0013 DataVersion: 3738767914 - [1654679746.726405][3567:3572] CHIP:TOO: NumberOfRFIDUsersSupported: 10 - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A0013 + command: "readAttribute" + attribute: "NumberOfRFIDUsersSupported" + response: + value: NumberOfRFIDUsersSupportedValue - label: "TH reads NumberOfWeekDays SchedulesSupporterUser attribute from DUT" PICS: DRLK.S.F04 && DRLK.S.A0014 - verification: | - ./chip-tool doorlock read number-of-week-day-schedules-supported-per-user 1 1 - - Verify " NumberOfWeekDaysSchedulesSupporterUser " on the TH(Chip-tool) Log: - - [1654679824.730432][3578:3583] CHIP:DMG: SuppressResponse = true, - [1654679824.730470][3578:3583] CHIP:DMG: InteractionModelRevision = 1 - [1654679824.730503][3578:3583] CHIP:DMG: } - [1654679824.730680][3578:3583] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0014 DataVersion: 3738767914 - [1654679824.730771][3578:3583] CHIP:TOO: NumberOfWeekDaySchedulesSupportedPerUser: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfWeekDaySchedulesSupportedPerUser" + response: + saveAs: NumberOfWeekDaysSchedulesSupporterUserValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes NumberOfWeekDaySchedules SupportedPerUser attribute as 31" - verification: | - ./chip-tool doorlock write-by-id 20 31 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653636148.975037][3319:3324] CHIP:DMG: StatusIB = - [1653636148.975072][3319:3324] CHIP:DMG: { - [1653636148.975106][3319:3324] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636148.975140][3319:3324] CHIP:DMG: }, - [1653636148.975175][3319:3324] CHIP:DMG: - [1653636148.975204][3319:3324] CHIP:DMG: }, - [1653636148.975237][3319:3324] CHIP:DMG: - disabled: true + PICS: DRLK.S.F04 && DRLK.S.A0014 + command: "writeAttribute" + attribute: "NumberOfWeekDaySchedulesSupportedPerUser" + arguments: + value: 31 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfWeekDaySchedules SupportedPerUser attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-week-day-schedules-supported-per-user 1 1 - - Verify " NumberOfWeekDaysSchedulesSupporterUser " on the TH(Chip-tool) Log: - - [1654679824.730432][3578:3583] CHIP:DMG: SuppressResponse = true, - [1654679824.730470][3578:3583] CHIP:DMG: InteractionModelRevision = 1 - [1654679824.730503][3578:3583] CHIP:DMG: } - [1654679824.730680][3578:3583] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0014 DataVersion: 3738767914 - [1654679824.730771][3578:3583] CHIP:TOO: NumberOfWeekDaySchedulesSupportedPerUser: 10 - disabled: true + PICS: DRLK.S.F04 && DRLK.S.A0014 + command: "readAttribute" + attribute: "NumberOfWeekDaySchedulesSupportedPerUser" + response: + value: NumberOfWeekDaysSchedulesSupporterUserValue - label: "TH reads NumberOfYearDay SchedulesSupportedPeruser attribute from DUT" PICS: DRLK.S.F0a && DRLK.S.A0015 - verification: | - ./chip-tool doorlock read number-of-year-day-schedules-supported-per-user 1 1 - - Verify " NumberOfYearDaySchedulesSupportedPeruser " on the TH(Chip-tool) Log: - - - [1654679926.699808][3597:3602] CHIP:DMG: SuppressResponse = true, - [1654679926.699845][3597:3602] CHIP:DMG: InteractionModelRevision = 1 - [1654679926.699879][3597:3602] CHIP:DMG: } - [1654679926.700057][3597:3602] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0015 DataVersion: 3738767914 - [1654679926.700147][3597:3602] CHIP:TOO: NumberOfYearDaySchedulesSupportedPerUser: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfYearDaySchedulesSupportedPerUser" + response: + saveAs: NumberOfYearDaySchedulesSupportedPeruserValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes NumberOfYearDay SchedulesSupportedPerUser attribute as 35" - verification: | - ./chip-tool doorlock write-by-id 21 35 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653636277.664432][3339:3344] CHIP:DMG: StatusIB = - [1653636277.664473][3339:3344] CHIP:DMG: { - [1653636277.664507][3339:3344] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636277.664545][3339:3344] CHIP:DMG: }, - [1653636277.664580][3339:3344] CHIP:DMG: - [1653636277.664636][3339:3344] CHIP:DMG: }, - [1653636277.664671][3339:3344] CHIP:DMG: - disabled: true + PICS: DRLK.S.F0a && DRLK.S.A0015 + command: "writeAttribute" + attribute: "NumberOfYearDaySchedulesSupportedPerUser" + arguments: + value: 35 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfYearDay SchedulesSupportedPerUser attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-year-day-schedules-supported-per-user 1 1 - - Verify " NumberOfYearDaySchedulesSupportedPeruser " on the TH(Chip-tool) Log: - - - [1654679926.699808][3597:3602] CHIP:DMG: SuppressResponse = true, - [1654679926.699845][3597:3602] CHIP:DMG: InteractionModelRevision = 1 - [1654679926.699879][3597:3602] CHIP:DMG: } - [1654679926.700057][3597:3602] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0015 DataVersion: 3738767914 - [1654679926.700147][3597:3602] CHIP:TOO: NumberOfYearDaySchedulesSupportedPerUser: 10 - disabled: true + PICS: DRLK.S.F0a && DRLK.S.A0015 + command: "readAttribute" + attribute: "NumberOfYearDaySchedulesSupportedPerUser" + response: + value: NumberOfYearDaySchedulesSupportedPeruserValue - label: "TH reads NumberOfHoliDay SchedulesSupported attribute from DUT" PICS: DRLK.S.F0b && DRLK.S.A0016 - verification: | - ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 - - Verify " NumberOfHoliDaySchedulesSupported " on the TH(Chip-tool) Log: - - [1654680009.422218][3611:3616] CHIP:DMG: SuppressResponse = true, - [1654680009.422246][3611:3616] CHIP:DMG: InteractionModelRevision = 1 - [1654680009.422272][3611:3616] CHIP:DMG: } - [1654680009.422416][3611:3616] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0016 DataVersion: 3738767914 - [1654680009.422491][3611:3616] CHIP:TOO: NumberOfHolidaySchedulesSupported: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfHolidaySchedulesSupported" + response: + saveAs: NumberOfHoliDaySchedulesSupportedValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes NumberOfHoliday SchedulesSupported attribute as 36" - verification: | - ./chip-tool doorlock write-by-id 22 36 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1654680084.923185][3619:3624] CHIP:DMG: StatusIB = - [1654680084.923237][3619:3624] CHIP:DMG: { - [1654680084.923312][3619:3624] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1654680084.923369][3619:3624] CHIP:DMG: }, - [1654680084.923422][3619:3624] CHIP:DMG: - [1654680084.923462][3619:3624] CHIP:DMG: }, - [1654680084.923511][3619:3624] CHIP:DMG: - [1654680084.923550][3619:3624] CHIP:DMG: ], - [1654680084.923597][3619:3624] CHIP:DMG: - disabled: true + PICS: DRLK.S.F0b && DRLK.S.A0016 + command: "writeAttribute" + attribute: "NumberOfHolidaySchedulesSupported" + arguments: + value: 36 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfHoliday SchedulesSupported attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 - - Verify " NumberOfHoliDaySchedulesSupported " on the TH(Chip-tool) Log: - - [1654680009.422218][3611:3616] CHIP:DMG: SuppressResponse = true, - [1654680009.422246][3611:3616] CHIP:DMG: InteractionModelRevision = 1 - [1654680009.422272][3611:3616] CHIP:DMG: } - [1654680009.422416][3611:3616] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0016 DataVersion: 3738767914 - [1654680009.422491][3611:3616] CHIP:TOO: NumberOfHolidaySchedulesSupported: 10 - disabled: true + PICS: DRLK.S.F0b && DRLK.S.A0016 + command: "readAttribute" + attribute: "NumberOfHolidaySchedulesSupported" + response: + value: NumberOfHoliDaySchedulesSupportedValue - label: "TH reads MaxPINCodeLength attribute from DUT" PICS: DRLK.S.F00 && DRLK.S.A0017 - verification: | - ./chip-tool doorlock read max-pincode-length 1 1 - - Verify " MaxPINCodeLength " on the TH(Chip-tool) Log: - - [1654680165.814980][3630:3635] CHIP:DMG: - [1654680165.815012][3630:3635] CHIP:DMG: SuppressResponse = true, - [1654680165.815046][3630:3635] CHIP:DMG: InteractionModelRevision = 1 - [1654680165.815077][3630:3635] CHIP:DMG: } - [1654680165.815239][3630:3635] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0017 DataVersion: 3738767914 - [1654680165.815374][3630:3635] CHIP:TOO: MaxPINCodeLength: 8 - disabled: true + command: "readAttribute" + attribute: "MaxPINCodeLength" + response: + saveAs: MaxPINCodeLengthValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes MaxPINCodeLength attribute as 85" - verification: | - ./chip-tool doorlock write-by-id 23 85 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1653636463.990965][3391:3396] CHIP:DMG: StatusIB = - [1653636463.991004][3391:3396] CHIP:DMG: { - [1653636463.991043][3391:3396] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636463.991084][3391:3396] CHIP:DMG: }, - [1653636463.991125][3391:3396] CHIP:DMG: - [1653636463.991159][3391:3396] CHIP:DMG: }, - [1653636463.991199][3391:3396] CHIP:DMG: - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0017 + command: "writeAttribute" + attribute: "MaxPINCodeLength" + arguments: + value: 85 + response: + error: UNSUPPORTED_WRITE - label: "TH reads MaxPINCodeLength attribute from DUT" - verification: | - ./chip-tool doorlock read max-pincode-length 1 1 - - Verify " MaxPINCodeLength " on the TH(Chip-tool) Log: - - [1654680165.814980][3630:3635] CHIP:DMG: - [1654680165.815012][3630:3635] CHIP:DMG: SuppressResponse = true, - [1654680165.815046][3630:3635] CHIP:DMG: InteractionModelRevision = 1 - [1654680165.815077][3630:3635] CHIP:DMG: } - [1654680165.815239][3630:3635] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0017 DataVersion: 3738767914 - [1654680165.815374][3630:3635] CHIP:TOO: MaxPINCodeLength: 8 - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0017 + command: "readAttribute" + attribute: "MaxPINCodeLength" + response: + value: MaxPINCodeLengthValue - label: "TH reads MinPINCodeLength attribute from DUT" PICS: DRLK.S.F00 && DRLK.S.A0018 - verification: | - ./chip-tool doorlock read min-pincode-length 1 1 - - Verify " MinPINCodeLength " on the TH(Chip-tool) Log: - - [1654680280.327216][3639:3644] CHIP:DMG: SuppressResponse = true, - [1654680280.327241][3639:3644] CHIP:DMG: InteractionModelRevision = 1 - [1654680280.327274][3639:3644] CHIP:DMG: } - [1654680280.327488][3639:3644] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0018 DataVersion: 3738767914 - [1654680280.327558][3639:3644] CHIP:TOO: MinPINCodeLength: 6 - disabled: true + command: "readAttribute" + attribute: "MinPINCodeLength" + response: + saveAs: MinPINCodeLengthValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes MinPINCodeLength attribute as 63" - verification: | - ./chip-tool doorlock write-by-id 24 63 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653636555.069388][3409:3414] CHIP:DMG: StatusIB = - [1653636555.069431][3409:3414] CHIP:DMG: { - [1653636555.069473][3409:3414] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636555.069520][3409:3414] CHIP:DMG: }, - [1653636555.069563][3409:3414] CHIP:DMG: - [1653636555.069600][3409:3414] CHIP:DMG: }, - [1653636555.069643][3409:3414] CHIP:DMG: - [1653636555.069676][3409:3414] CHIP:DMG: ], - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0018 + command: "writeAttribute" + attribute: "MinPINCodeLength" + arguments: + value: 63 + response: + error: UNSUPPORTED_WRITE - label: "TH reads MinPINCodeLength attribute from DUT" - verification: | - ./chip-tool doorlock read min-pincode-length 1 1 - - Verify " MinPINCodeLength " on the TH(Chip-tool) Log: - - [1654680280.327216][3639:3644] CHIP:DMG: SuppressResponse = true, - [1654680280.327241][3639:3644] CHIP:DMG: InteractionModelRevision = 1 - [1654680280.327274][3639:3644] CHIP:DMG: } - [1654680280.327488][3639:3644] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0018 DataVersion: 3738767914 - [1654680280.327558][3639:3644] CHIP:TOO: MinPINCodeLength: 6 - disabled: true + PICS: DRLK.S.F00 && DRLK.S.A0018 + command: "readAttribute" + attribute: "MinPINCodeLength" + response: + value: MinPINCodeLengthValue - label: "TH reads MaxRFIDCodeLength attribute from DUT" PICS: DRLK.S.F01 && DRLK.S.A0019 - verification: | - ./chip-tool doorlock read max-rfidcode-length 1 1 - - Verify " MaxRFIDCodeLength " on the TH(Chip-tool) Log: - - [1654680386.044531][3650:3655] CHIP:DMG: SuppressResponse = true, - [1654680386.044564][3650:3655] CHIP:DMG: InteractionModelRevision = 1 - [1654680386.044593][3650:3655] CHIP:DMG: } - [1654680386.044748][3650:3655] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0019 DataVersion: 3738767914 - [1654680386.044824][3650:3655] CHIP:TOO: MaxRFIDCodeLength: 20 - disabled: true + command: "readAttribute" + attribute: "MaxRFIDCodeLength" + response: + saveAs: MaxRFIDCodeLengthValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes MaxRFIDCodeLength attribute as 46" - verification: | - ./chip-tool doorlock write-by-id 25 46 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1653636648.222617][3428:3433] CHIP:DMG: - [1653636648.222661][3428:3433] CHIP:DMG: StatusIB = - [1653636648.222705][3428:3433] CHIP:DMG: { - [1653636648.222750][3428:3433] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1653636648.222800][3428:3433] CHIP:DMG: }, - [1653636648.222845][3428:3433] CHIP:DMG: - [1653636648.222886][3428:3433] CHIP:DMG: }, - [1653636648.222929][3428:3433] CHIP:DMG: - [1653636648.222964][3428:3433] CHIP:DMG: ], - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A0019 + command: "writeAttribute" + attribute: "MaxRFIDCodeLength" + arguments: + value: 46 + response: + error: UNSUPPORTED_WRITE - label: "TH reads MaxRFIDCodeLength attribute from DUT" - verification: | - ./chip-tool doorlock read max-rfidcode-length 1 1 - - Verify " MaxRFIDCodeLength " on the TH(Chip-tool) Log: - - [1654680386.044531][3650:3655] CHIP:DMG: SuppressResponse = true, - [1654680386.044564][3650:3655] CHIP:DMG: InteractionModelRevision = 1 - [1654680386.044593][3650:3655] CHIP:DMG: } - [1654680386.044748][3650:3655] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0019 DataVersion: 3738767914 - [1654680386.044824][3650:3655] CHIP:TOO: MaxRFIDCodeLength: 20 - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A0019 + command: "readAttribute" + attribute: "MaxRFIDCodeLength" + response: + value: MaxRFIDCodeLengthValue - label: "TH reads MinRFIDCodeLength attribute from DUT" PICS: DRLK.S.F01 && DRLK.S.A001a - verification: | - ./chip-tool doorlock read min-rfidcode-length 1 1 - - Verify " MinRFIDCodeLength " on the TH(Chip-tool) Log: - - [1654680510.153261][3668:3673] CHIP:DMG: SuppressResponse = true, - [1654680510.153298][3668:3673] CHIP:DMG: InteractionModelRevision = 1 - [1654680510.153333][3668:3673] CHIP:DMG: } - [1654680510.153513][3668:3673] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001A DataVersion: 3738767914 - [1654680510.153602][3668:3673] CHIP:TOO: MinRFIDCodeLength: 10 - disabled: true + command: "readAttribute" + attribute: "MinRFIDCodeLength" + response: + saveAs: MinRFIDCodeLengthValue + constraints: + type: int16u + minValue: 0 + maxValue: 65534 - label: "TH writes MinRFIDCodeLength attribute as 17" - verification: | - ./chip-tool doorlock write-by-id 26 17 1 1 - - Verify "DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [1654680561.429054][3676:3681] CHIP:DMG: StatusIB = - [1654680561.429096][3676:3681] CHIP:DMG: { - [1654680561.429139][3676:3681] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1654680561.429181][3676:3681] CHIP:DMG: }, - [1654680561.429222][3676:3681] CHIP:DMG: - [1654680561.429258][3676:3681] CHIP:DMG: }, - [1654680561.429301][3676:3681] CHIP:DMG: - [1654680561.429332][3676:3681] CHIP:DMG: ], - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A001a + command: "writeAttribute" + attribute: "MinRFIDCodeLength" + arguments: + value: 17 + response: + error: UNSUPPORTED_WRITE - label: "TH reads MinRFIDCodeLength attribute from DUT" - verification: | - ./chip-tool doorlock read min-rfidcode-length 1 1 - - Verify " MinRFIDCodeLength " on the TH(Chip-tool) Log: - - [1654680510.153261][3668:3673] CHIP:DMG: SuppressResponse = true, - [1654680510.153298][3668:3673] CHIP:DMG: InteractionModelRevision = 1 - [1654680510.153333][3668:3673] CHIP:DMG: } - [1654680510.153513][3668:3673] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001A DataVersion: 3738767914 - [1654680510.153602][3668:3673] CHIP:TOO: MinRFIDCodeLength: 10 - disabled: true + PICS: DRLK.S.F01 && DRLK.S.A001a + command: "readAttribute" + attribute: "MinRFIDCodeLength" + response: + value: MinRFIDCodeLengthValue - label: "TH reads Credential RulesSupport attribute from DUT" PICS: DRLK.S.F08 && DRLK.S.A001b - verification: | - ./chip-tool doorlock read credential-rules-support 1 1 - - Verify " Credential RulesSupport " on the TH(Chip-tool) Log: - - [1654680805.922076][3692:3697] CHIP:DMG: SuppressResponse = true, - [1654680805.922118][3692:3697] CHIP:DMG: InteractionModelRevision = 1 - [1654680805.922155][3692:3697] CHIP:DMG: } - [1654680805.922350][3692:3697] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001B DataVersion: 3738767914 - [1654680805.922451][3692:3697] CHIP:TOO: CredentialRulesSupport: 1 - disabled: true + command: "readAttribute" + attribute: "CredentialRulesSupport" + response: + saveAs: CredentialRulesSupportValue + constraints: + type: bitmap8 + minValue: 0 + maxValue: 2 - label: "TH writes Credential RulesSupport attribute as bit 0 is set to 1" + PICS: PICS_SKIP_SAMPLE_APP && DRLK.S.F08 && DRLK.S.A001b verification: | ./chip-tool doorlock write-by-id 27 1 1 1 @@ -981,240 +616,205 @@ tests: [1653636825.034933][3467:3472] CHIP:DMG: }, [1653636825.034977][3467:3472] CHIP:DMG: [1653636825.035013][3467:3472] CHIP:DMG: ], - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads Credential RulesSupport attribute from DUT" - verification: | - ./chip-tool doorlock read credential-rules-support 1 1 - - Verify " Credential RulesSupport " on the TH(Chip-tool) Log: - - [1654680805.922076][3692:3697] CHIP:DMG: SuppressResponse = true, - [1654680805.922118][3692:3697] CHIP:DMG: InteractionModelRevision = 1 - [1654680805.922155][3692:3697] CHIP:DMG: } - [1654680805.922350][3692:3697] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001B DataVersion: 3738767914 - [1654680805.922451][3692:3697] CHIP:TOO: CredentialRulesSupport: 1 - disabled: true + PICS: DRLK.S.F08 && DRLK.S.A001b + command: "readAttribute" + attribute: "CredentialRulesSupport" + response: + value: CredentialRulesSupportValue - label: "TH reads Language attribute from DUT TH saves the values as Current_Language Code" PICS: DRLK.S.A0021 - verification: | - ./chip-tool doorlock read language 1 1 - - Verify " Language " on the TH(Chip-tool) Log: + command: "readAttribute" + attribute: "Language" + response: + saveAs: Current_Language_Code + constraints: + type: char_string + maxLength: 3 - [1654680885.954478][3700:3705] CHIP:DMG: SuppressResponse = true, - [1654680885.954512][3700:3705] CHIP:DMG: InteractionModelRevision = 1 - [1654680885.954543][3700:3705] CHIP:DMG: } - [1654680885.954710][3700:3705] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0021 DataVersion: 3738767914 - [1654680885.954770][3700:3705] CHIP:TOO: Language: en - disabled: true + - label: "TH writes Language attribute as fr" + PICS: DRLK.S.A0021.Write + command: "writeAttribute" + attribute: "Language" + arguments: + value: "fr" - label: "TH writes Language attribute as fr" - verification: | - ./chip-tool doorlock write language fr 1 1 - - Verify "DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1654680959.481870][3711:3716] CHIP:DMG: StatusIB = - [1654680959.481910][3711:3716] CHIP:DMG: { - [1654680959.481949][3711:3716] CHIP:DMG: status = 0x00 (SUCCESS), - [1654680959.481991][3711:3716] CHIP:DMG: }, - [1654680959.482029][3711:3716] CHIP:DMG: - [1654680959.482061][3711:3716] CHIP:DMG: }, - [1654680959.482097][3711:3716] CHIP:DMG: - [1654680959.482126][3711:3716] CHIP:DMG: ], - [1654680959.482161][3711:3716] CHIP:DMG: - [1654680959.482190][3711:3716] CHIP:DMG: InteractionModelRevision = 1 - [1654680959.482219][3711:3716] CHIP:DMG: } - disabled: true + PICS: " !DRLK.S.A0021.Write " + command: "writeAttribute" + attribute: "Language" + arguments: + value: "fr" + response: + error: UNSUPPORTED_WRITE] - label: "TH reads Language attribute from DUT" - verification: | - ./chip-tool doorlock read language 1 1 + PICS: DRLK.S.A0021.Write + command: "readAttribute" + attribute: "Language" + response: + value: "fr" - Verify " Language " on the TH(Chip-tool) Log: - - [1654681045.720848][3721:3726] CHIP:DMG: SuppressResponse = true, - [1654681045.720882][3721:3726] CHIP:DMG: InteractionModelRevision = 1 - [1654681045.720911][3721:3726] CHIP:DMG: } - [1654681045.721064][3721:3726] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0021 DataVersion: 3738767915 - [1654681045.721119][3721:3726] CHIP:TOO: Language: fr - disabled: true + - label: "TH reads Language attribute from DUT" + PICS: " !DRLK.S.A0021.Write " + command: "readAttribute" + attribute: "Language" + response: + value: Current_Language_Code - label: "TH reads LEDSettings attribute from DUT TH saves the values as Current_LEDSettings value" PICS: DRLK.S.A0022 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read ledsettings 1 1 - - Verify " LEDSettings " on the TH(Chip-tool) Log: - - [1654681074.956471][3728:3733] CHIP:DMG: StatusIB = - [1654681074.956514][3728:3733] CHIP:DMG: { - [1654681074.956558][3728:3733] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654681074.956602][3728:3733] CHIP:DMG: }, - [1654681074.956646][3728:3733] CHIP:DMG: - [1654681074.956686][3728:3733] CHIP:DMG: }, - [1654681074.956729][3728:3733] CHIP:DMG: - [1654681074.956762][3728:3733] CHIP:DMG: }, - [1654681074.956801][3728:3733] CHIP:DMG: - [1654681074.956833][3728:3733] CHIP:DMG: ], - disabled: true + command: "readAttribute" + attribute: "LEDSettings" + response: + saveAs: Current_LEDSettings + constraints: + type: int8u + minValue: 0 + maxValue: 2 - label: "TH writes LEDSettings attribute as 2" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome + PICS: DRLK.S.A0022.Write + command: "writeAttribute" + attribute: "LEDSettings" + arguments: + value: 2 - ./chip-tool doorlock write ledsettings 2 1 1 - - Verify " DUT responds with UNSUPPORTED_WRITE " on the TH(Chip-tool) Log: - - [[1653636933.733579][3485:3490] CHIP:DMG: StatusIB = - [1653636933.733614][3485:3490] CHIP:DMG: { - [1653636933.733652][3485:3490] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653636933.733692][3485:3490] CHIP:DMG: }, - [1653636933.733729][3485:3490] CHIP:DMG: - [1653636933.733762][3485:3490] CHIP:DMG: }, - [1653636933.733800][3485:3490] CHIP:DMG: - [1653636933.733830][3485:3490] CHIP:DMG: }, - [1653636933.733864][3485:3490] CHIP:DMG: - [1653636933.733891][3485:3490] CHIP:DMG: ], - disabled: true + - label: "TH writes LEDSettings attribute as 2" + PICS: " !DRLK.S.A0022.Write && DRLK.S.A0022 " + command: "writeAttribute" + attribute: "LEDSettings" + arguments: + value: 2 + response: + error: UNSUPPORTED_WRITE - label: "TH reads LEDSettings attribute from DUT" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read ledsettings 1 1 + PICS: DRLK.S.A0022.Write + command: "readAttribute" + attribute: "LEDSettings" + response: + value: 2 - Verify " LEDSettings " on the TH(Chip-tool) Log: - - [1654681074.956471][3728:3733] CHIP:DMG: StatusIB = - [1654681074.956514][3728:3733] CHIP:DMG: { - [1654681074.956558][3728:3733] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654681074.956602][3728:3733] CHIP:DMG: }, - [1654681074.956646][3728:3733] CHIP:DMG: - [1654681074.956686][3728:3733] CHIP:DMG: }, - [1654681074.956729][3728:3733] CHIP:DMG: - [1654681074.956762][3728:3733] CHIP:DMG: }, - [1654681074.956801][3728:3733] CHIP:DMG: - [1654681074.956833][3728:3733] CHIP:DMG: ], - disabled: true + - label: "TH reads LEDSettings attribute from DUT" + PICS: " !DRLK.S.A0022.Write && DRLK.S.A0022 " + command: "readAttribute" + attribute: "LEDSettings" + response: + value: Current_LEDSettings - label: "TH reads AutoRelockTime attribute from DUT TH saves the values as Current_AutoRelockTime" PICS: DRLK.S.A0023 - verification: | - ./chip-tool doorlock read auto-relock-time 1 1 - - Verify " AutoRelockTime " on the TH(Chip-tool) Log: + command: "readAttribute" + attribute: "AutoRelockTime" + response: + saveAs: Current_AutoRelockTime + constraints: + type: int32u + minValue: 0 + maxValue: 4294967294 - [1654681151.469284][3736:3741] CHIP:DMG: SuppressResponse = true, - [1654681151.469317][3736:3741] CHIP:DMG: InteractionModelRevision = 1 - [1654681151.469347][3736:3741] CHIP:DMG: } - [1654681151.469506][3736:3741] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0023 DataVersion: 3738767915 - [1654681151.469588][3736:3741] CHIP:TOO: AutoRelockTime: 60 - disabled: true + - label: "TH writes AutoRelockTime attribute as 180 seconds" + PICS: DRLK.S.A0023.Write + command: "writeAttribute" + attribute: "AutoRelockTime" + arguments: + value: 180 - label: "TH writes AutoRelockTime attribute as 180 seconds" - verification: | - ./chip-tool doorlock write auto-relock-time 180 1 1 - - Verify " DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1654681228.902110][3744:3749] CHIP:DMG: StatusIB = - [1654681228.902166][3744:3749] CHIP:DMG: { - [1654681228.902222][3744:3749] CHIP:DMG: status = 0x00 (SUCCESS), - [1654681228.902283][3744:3749] CHIP:DMG: }, - [1654681228.902339][3744:3749] CHIP:DMG: - [1654681228.902384][3744:3749] CHIP:DMG: }, - [1654681228.902437][3744:3749] CHIP:DMG: - [1654681228.902480][3744:3749] CHIP:DMG: ], - [1654681228.902533][3744:3749] CHIP:DMG: - [1654681228.902576][3744:3749] CHIP:DMG: InteractionModelRevision = 1 - [1654681228.902619][3744:3749] CHIP:DMG: } - disabled: true + PICS: " !DRLK.S.A0023.Write && DRLK.S.A0023 " + command: "writeAttribute" + attribute: "AutoRelockTime" + arguments: + value: 180 + response: + error: UNSUPPORTED_WRITE - label: "TH reads AutoRelockTime attribute from DUT" - verification: | - ./chip-tool doorlock read auto-relock-time 1 1 + PICS: DRLK.S.A0023.Write + command: "readAttribute" + attribute: "AutoRelockTime" + response: + value: 180 - Verify " AutoRelockTime " on the TH(Chip-tool) Log: - - [1654681283.157135][3754:3759] CHIP:DMG: SuppressResponse = true, - [1654681283.157160][3754:3759] CHIP:DMG: InteractionModelRevision = 1 - [1654681283.157183][3754:3759] CHIP:DMG: } - [1654681283.157317][3754:3759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0023 DataVersion: 3738767916 - [1654681283.157391][3754:3759] CHIP:TOO: AutoRelockTime: 180 - disabled: true + - label: "TH reads AutoRelockTime attribute from DUT" + PICS: " !DRLK.S.A0023.Write && DRLK.S.A0023 " + command: "readAttribute" + attribute: "AutoRelockTime" + response: + value: Current_AutoRelockTime - label: "TH reads SoundVolume attribute from DUT TH saves the values as Current_SoundVolume value" PICS: DRLK.S.A0024 - verification: | - ./chip-tool doorlock read sound-volume 1 1 - - Verify " SoundVolume " on the TH(Chip-tool) Log: - - [1654681357.022476][3768:3773] CHIP:DMG: SuppressResponse = true, - [1654681357.022511][3768:3773] CHIP:DMG: InteractionModelRevision = 1 - [1654681357.022543][3768:3773] CHIP:DMG: } - [1654681357.022704][3768:3773] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0024 DataVersion: 3738767916 - [1654681357.022787][3768:3773] CHIP:TOO: SoundVolume: 0 - disabled: true + command: "readAttribute" + attribute: "SoundVolume" + response: + saveAs: Current_SoundVolume + constraints: + type: int16u + minValue: 0 + maxValue: 3 - label: "TH writes SoundVolume attribute as 3" - verification: | - ./chip-tool doorlock write sound-volume 3 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: + PICS: DRLK.S.A0024.Write + command: "writeAttribute" + attribute: "SoundVolume" + arguments: + value: 3 - [1654681412.367916][3782:3787] CHIP:DMG: StatusIB = - [1654681412.367963][3782:3787] CHIP:DMG: { - [1654681412.368009][3782:3787] CHIP:DMG: status = 0x00 (SUCCESS), - [1654681412.368055][3782:3787] CHIP:DMG: }, - [1654681412.368099][3782:3787] CHIP:DMG: - [1654681412.368136][3782:3787] CHIP:DMG: }, - [1654681412.368180][3782:3787] CHIP:DMG: - [1654681412.368214][3782:3787] CHIP:DMG: ], - disabled: true + - label: "TH writes SoundVolume attribute as 3" + PICS: " !DRLK.S.A0024.Write && DRLK.S.A0024 " + command: "writeAttribute" + attribute: "SoundVolume" + arguments: + value: 3 + response: + error: UNSUPPORTED_WRITE - label: "TH reads SoundVolume attribute from DUT" - verification: | - ./chip-tool doorlock read sound-volume 1 1 + PICS: DRLK.S.A0024.Write + command: "readAttribute" + attribute: "SoundVolume" + response: + value: 3 - Verify " SoundVolume " on the TH(Chip-tool) Log: - - [1654681449.086921][3789:3794] CHIP:DMG: SuppressResponse = true, - [1654681449.086958][3789:3794] CHIP:DMG: InteractionModelRevision = 1 - [1654681449.086992][3789:3794] CHIP:DMG: } - [1654681449.087170][3789:3794] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0024 DataVersion: 3738767918 - [1654681449.087262][3789:3794] CHIP:TOO: SoundVolume: 3 - disabled: true + - label: "TH reads SoundVolume attribute from DUT" + PICS: " !DRLK.S.A0024.Write && DRLK.S.A0024 " + command: "readAttribute" + attribute: "SoundVolume" + response: + value: Current_SoundVolume - label: "TH reads Supported OperatingModes attribute from DUT" PICS: DRLK.S.A0026 - verification: | - ./chip-tool doorlock read supported-operating-modes 1 1 - - Verify " SupportedOperatingModes " on the TH(Chip-tool) Log: - - [1654681500.464948][3797:3802] CHIP:DMG: SuppressResponse = true, - [1654681500.464974][3797:3802] CHIP:DMG: InteractionModelRevision = 1 - [1654681500.464998][3797:3802] CHIP:DMG: } - [1654681500.465125][3797:3802] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0026 DataVersion: 3738767918 - [1654681500.465198][3797:3802] CHIP:TOO: SupportedOperatingModes: 65526 - disabled: true + command: "readAttribute" + attribute: "SupportedOperatingModes" + response: + value: 0xFFF6 + saveAs: Current_Supported + constraints: + type: enum16 - label: "TH writes Supported OperatingModes attribute as bit 0 is set to 0" + PICS: PICS_SKIP_SAMPLE_APP && DRLK.S.A0026 verification: | ./chip-tool doorlock write-by-id 38 0 1 1 @@ -1228,117 +828,105 @@ tests: [1653637108.039380][3522:3527] CHIP:DMG: }, [1653637108.039424][3522:3527] CHIP:DMG: [1653637108.039460][3522:3527] CHIP:DMG: ], - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads Supported OperatingModes attribute from DUT" - verification: | - ./chip-tool doorlock read supported-operating-modes 1 1 - - Verify " SupportedOperatingModes " on the TH(Chip-tool) Log: - - [1654681500.464948][3797:3802] CHIP:DMG: SuppressResponse = true, - [1654681500.464974][3797:3802] CHIP:DMG: InteractionModelRevision = 1 - [1654681500.464998][3797:3802] CHIP:DMG: } - [1654681500.465125][3797:3802] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0026 DataVersion: 3738767918 - [1654681500.465198][3797:3802] CHIP:TOO: SupportedOperatingModes: 65526 - disabled: true + PICS: DRLK.S.A0026 + command: "readAttribute" + attribute: "SupportedOperatingModes" + response: + value: Current_Supported - label: "TH reads OperatingMode attribute from DUT TH saves the values as Current_OperatingMode value" PICS: DRLK.S.A0025 - verification: | - ./chip-tool doorlock read operating-mode 1 1 - - Verify "OperatingMode " on the TH(Chip-tool) Log: - - - [1654681628.413702][3817:3822] CHIP:DMG: SuppressResponse = true, - [1654681628.413733][3817:3822] CHIP:DMG: InteractionModelRevision = 1 - [1654681628.413762][3817:3822] CHIP:DMG: } - [1654681628.413908][3817:3822] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0025 DataVersion: 3738767918 - [1654681628.413987][3817:3822] CHIP:TOO: OperatingMode: 0 - disabled: true + command: "readAttribute" + attribute: "OperatingMode" + response: + saveAs: Current_OperatingMode + constraints: + type: enum8 + minValue: 0 + maxValue: 4 - label: "TH writes OperatingMode attribute to a value as Normal and the new value is present in SupportedOperatingModes" - verification: | - ./chip-tool doorlock write operating-mode 0 1 1 - - Verify "DUT sends SUCCESS response " on the TH(Chip-tool) Log: + PICS: DRLK.S.A0025.Write + command: "writeAttribute" + attribute: "OperatingMode" + arguments: + value: 0 - [1654681685.239429][3833:3838] CHIP:DMG: StatusIB = - [1654681685.239464][3833:3838] CHIP:DMG: { - [1654681685.239499][3833:3838] CHIP:DMG: status = 0x00 (SUCCESS), - [1654681685.239532][3833:3838] CHIP:DMG: }, - [1654681685.239567][3833:3838] CHIP:DMG: - [1654681685.239595][3833:3838] CHIP:DMG: }, - [1654681685.239628][3833:3838] CHIP:DMG: - [1654681685.239651][3833:3838] CHIP:DMG: ], - [1654681685.239681][3833:3838] CHIP:DMG: - disabled: true + - label: + "TH writes OperatingMode attribute to a value as Normal and the new + value is present in SupportedOperatingModes" + PICS: " !DRLK.S.A0025.Write && DRLK.S.A0025 " + command: "writeAttribute" + attribute: "OperatingMode" + arguments: + value: 0 + response: + error: UNSUPPORTED_WRITE - label: "TH writes OperatingMode attribute to a value as NoRemoteLockUnlock and the new value is present in Supported OperatingModes" - verification: | - ./chip-tool doorlock write operating-mode 3 1 1 - - Verify "OperatingMode response " on the TH(Chip-tool) Log: + PICS: DRLK.S.A0025.Write + command: "writeAttribute" + attribute: "OperatingMode" + arguments: + value: 3 - - [1654681685.239429][3833:3838] CHIP:DMG: StatusIB = - [1654681685.239464][3833:3838] CHIP:DMG: { - [1654681685.239499][3833:3838] CHIP:DMG: status = 0x00 (SUCCESS), - [1654681685.239532][3833:3838] CHIP:DMG: }, - [1654681685.239567][3833:3838] CHIP:DMG: - [1654681685.239595][3833:3838] CHIP:DMG: }, - [1654681685.239628][3833:3838] CHIP:DMG: - [1654681685.239651][3833:3838] CHIP:DMG: ], - [1654681685.239681][3833:3838] CHIP:DMG: - disabled: true + - label: + "TH writes OperatingMode attribute to a value as NoRemoteLockUnlock + and the new value is present in Supported OperatingModes" + PICS: " !DRLK.S.A0025.Write && DRLK.S.A0025 " + command: "writeAttribute" + attribute: "OperatingMode" + arguments: + value: 3 + response: + error: UNSUPPORTED_WRITE - label: "TH reads OperatingMode attribute from DUT" - verification: | - ./chip-tool doorlock read operating-mode 1 1 + PICS: DRLK.S.A0025.Write + command: "readAttribute" + attribute: "OperatingMode" + response: + constraints: + anyOf: [0, 3] - Verify "OperatingMode " on the TH(Chip-tool) Log: - - [1654681926.819078][3864:3870] CHIP:DMG: SuppressResponse = true, - [1654681926.819124][3864:3870] CHIP:DMG: InteractionModelRevision = 1 - [1654681926.819165][3864:3870] CHIP:DMG: } - [1654681926.819486][3864:3870] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0025 DataVersion: 3738767921 - [1654681926.819598][3864:3870] CHIP:TOO: OperatingMode: 3 - disabled: true + - label: "TH reads OperatingMode attribute from DUT" + PICS: " !DRLK.S.A0025.Write && DRLK.S.A0025 " + command: "readAttribute" + attribute: "OperatingMode" + response: + value: Current_OperatingMode - label: "TH reads Default ConfigurationRegister attribute from DUT" PICS: DRLK.S.A0027 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read default-configuration-register 1 1 - - Verify "Default ConfigurationRegister " on the TH(Chip-tool) Log: - - [1654682006.877169][3876:3881] CHIP:DMG: StatusIB = - [1654682006.877222][3876:3881] CHIP:DMG: { - [1654682006.877277][3876:3881] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682006.877330][3876:3881] CHIP:DMG: }, - [1654682006.877385][3876:3881] CHIP:DMG: - [1654682006.877432][3876:3881] CHIP:DMG: }, - [1654682006.877486][3876:3881] CHIP:DMG: - [1654682006.877529][3876:3881] CHIP:DMG: }, - [1654682006.877577][3876:3881] CHIP:DMG: - [1654682006.877615][3876:3881] CHIP:DMG: ], - [1654682006.877663][3876:3881] CHIP:DMG: - [1654682006.877701][3876:3881] CHIP:DMG: SuppressResponse = true, - [1654682006.877742][3876:3881] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + command: "readAttribute" + attribute: "DefaultConfigurationRegister" + response: + saveAs: ConfigurationRegisterValue + constraints: + type: bitmap16 + minValue: 0 + maxValue: 7 - label: "TH writes Default ConfigurationRegister attribute as bit 0 is set to 1" + PICS: DRLK.S.A0027 && PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1354,302 +942,166 @@ tests: [1653637348.334084][3570:3575] CHIP:DMG: }, [1653637348.334124][3570:3575] CHIP:DMG: [1653637348.334156][3570:3575] CHIP:DMG: ], - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads Default ConfigurationRegister attribute from DUT" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read default-configuration-register 1 1 - - Verify "Default ConfigurationRegister " on the TH(Chip-tool) Log: - - [1654682006.877169][3876:3881] CHIP:DMG: StatusIB = - [1654682006.877222][3876:3881] CHIP:DMG: { - [1654682006.877277][3876:3881] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682006.877330][3876:3881] CHIP:DMG: }, - [1654682006.877385][3876:3881] CHIP:DMG: - [1654682006.877432][3876:3881] CHIP:DMG: }, - [1654682006.877486][3876:3881] CHIP:DMG: - [1654682006.877529][3876:3881] CHIP:DMG: }, - [1654682006.877577][3876:3881] CHIP:DMG: - [1654682006.877615][3876:3881] CHIP:DMG: ], - [1654682006.877663][3876:3881] CHIP:DMG: - [1654682006.877701][3876:3881] CHIP:DMG: SuppressResponse = true, - [1654682006.877742][3876:3881] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + PICS: DRLK.S.A0027 + command: "readAttribute" + attribute: "DefaultConfigurationRegister" + response: + value: ConfigurationRegisterValue - label: "TH reads EnableLocalProgramming attribute from DUT TH saves the values as Current_EnableLocal Programming value" PICS: DRLK.S.A0028 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read enable-local-programming 1 1 - - Verify "EnableLocalProgramming " on the TH(Chip-tool) Log: - - [1654682107.524282][3886:3891] CHIP:DMG: { - [1654682107.524320][3886:3891] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682107.524357][3886:3891] CHIP:DMG: }, - [1654682107.524395][3886:3891] CHIP:DMG: - [1654682107.524424][3886:3891] CHIP:DMG: }, - [1654682107.524463][3886:3891] CHIP:DMG: - [1654682107.524491][3886:3891] CHIP:DMG: }, - [1654682107.524524][3886:3891] CHIP:DMG: - [1654682107.524548][3886:3891] CHIP:DMG: ], - disabled: true + command: "readAttribute" + attribute: "EnableLocalProgramming" + response: + value: 1 + saveAs: Current_EnableLocal_Programming - label: "TH writes EnableLocalProgramming attribute as false" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 40 0 1 1 - - Verify "DUT responds with UNSUPPORTED_ATTRIBUTE" on the TH(Chip-tool) Log: + PICS: DRLK.S.A0028.Write + command: "writeAttribute" + attribute: "EnableLocalProgramming" + arguments: + value: 0 - [1653637444.331118][3599:3604] CHIP:DMG: StatusIB = - [1653637444.331165][3599:3604] CHIP:DMG: { - [1653637444.331210][3599:3604] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653637444.331257][3599:3604] CHIP:DMG: }, - [1653637444.331304][3599:3604] CHIP:DMG: - [1653637444.331342][3599:3604] CHIP:DMG: }, - [1653637444.331386][3599:3604] CHIP:DMG: - [1653637444.331421][3599:3604] CHIP:DMG: ], - [1653637444.331465][3599:3604] CHIP:DMG: - disabled: true + - label: "TH writes EnableLocalProgramming attribute as false" + PICS: " !DRLK.S.A0028.Write && DRLK.S.A0028 " + command: "writeAttribute" + attribute: "EnableLocalProgramming" + arguments: + value: 0 + response: + error: UNSUPPORTED_WRITE - label: "TH reads EnableLocalProgramming attribute from DUT" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome + PICS: DRLK.S.A0028.Write + command: "readAttribute" + attribute: "EnableLocalProgramming" + response: + value: 0 - ./chip-tool doorlock read enable-local-programming 1 1 - - Verify "EnableLocalProgramming " on the TH(Chip-tool) Log: - - [1654682107.524282][3886:3891] CHIP:DMG: { - [1654682107.524320][3886:3891] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682107.524357][3886:3891] CHIP:DMG: }, - [1654682107.524395][3886:3891] CHIP:DMG: - [1654682107.524424][3886:3891] CHIP:DMG: }, - [1654682107.524463][3886:3891] CHIP:DMG: - [1654682107.524491][3886:3891] CHIP:DMG: }, - [1654682107.524524][3886:3891] CHIP:DMG: - [1654682107.524548][3886:3891] CHIP:DMG: ], - disabled: true + - label: "TH reads EnableLocalProgramming attribute from DUT" + PICS: " !DRLK.S.A0028.Write && DRLK.S.A0028 " + command: "readAttribute" + attribute: "EnableLocalProgramming" + response: + value: Current_EnableLocal_Programming - label: "TH reads EnableOneTouchLocking attribute from DUT" PICS: DRLK.S.A0029 - verification: | - ./chip-tool doorlock read enable-one-touch-locking 1 1 - - Verify "EnableOneTouchLocking " on the TH(Chip-tool) Log: - - [1654682200.857783][3895:3900] CHIP:DMG: SuppressResponse = true, - [1654682200.857809][3895:3900] CHIP:DMG: InteractionModelRevision = 1 - [1654682200.857832][3895:3900] CHIP:DMG: } - [1654682200.857965][3895:3900] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0029 DataVersion: 3738767921 - [1654682200.858010][3895:3900] CHIP:TOO: EnableOneTouchLocking: FALSE - disabled: true + command: "readAttribute" + attribute: "EnableOneTouchLocking" + response: + value: 0 - label: "TH writes EnableOneTouchLocking attribute as true" PICS: DRLK.S.A0029 - verification: | - ./chip-tool doorlock write enable-one-touch-locking 1 1 1 - - Verify "DUT send the success response" on the TH(Chip-tool) Log: - - [1654682241.954790][3903:3908] CHIP:DMG: StatusIB = - [1654682241.954869][3903:3908] CHIP:DMG: { - [1654682241.954928][3903:3908] CHIP:DMG: status = 0x00 (SUCCESS), - [1654682241.954984][3903:3908] CHIP:DMG: }, - [1654682241.955041][3903:3908] CHIP:DMG: - [1654682241.955091][3903:3908] CHIP:DMG: }, - [1654682241.955145][3903:3908] CHIP:DMG: - [1654682241.955188][3903:3908] CHIP:DMG: ], - [1654682241.955241][3903:3908] CHIP:DMG: - disabled: true + command: "writeAttribute" + attribute: "EnableOneTouchLocking" + arguments: + value: 1 - label: "TH reads EnableOneTouchLocking attribute from DUT" - verification: | - ./chip-tool doorlock read enable-one-touch-locking 1 1 - - Verify "EnableOneTouchLocking " on the TH(Chip-tool) Log: - - [1654682289.946247][3914:3919] CHIP:DMG: SuppressResponse = true, - [1654682289.946294][3914:3919] CHIP:DMG: InteractionModelRevision = 1 - [1654682289.946336][3914:3919] CHIP:DMG: } - [1654682289.946551][3914:3919] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0029 DataVersion: 3738767922 - [1654682289.946626][3914:3919] CHIP:TOO: EnableOneTouchLocking: TRUE - disabled: true + PICS: DRLK.S.A0029 + command: "readAttribute" + attribute: "EnableOneTouchLocking" + response: + value: 1 - label: "TH reads EnableInside StatusLED attribute from DUT" PICS: DRLK.S.A002a - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read enable-inside-status-led 1 1 - - Verify "EnableInsideStatusLED" on the TH(Chip-tool) Log: - - [1654682333.059815][3921:3926] CHIP:DMG: StatusIB = - [1654682333.059848][3921:3926] CHIP:DMG: { - [1654682333.059880][3921:3926] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682333.059912][3921:3926] CHIP:DMG: }, - [1654682333.059945][3921:3926] CHIP:DMG: - [1654682333.059973][3921:3926] CHIP:DMG: }, - [1654682333.060005][3921:3926] CHIP:DMG: - [1654682333.060029][3921:3926] CHIP:DMG: }, - [1654682333.060060][3921:3926] CHIP:DMG: - [1654682333.060083][3921:3926] CHIP:DMG: ], - [1654682333.060112][3921:3926] CHIP:DMG: - disabled: true + command: "readAttribute" + attribute: "EnableInsideStatusLED" + response: + value: 0 - label: "TH writes EnableInsideStatusLED attribute as true" PICS: DRLK.S.A002a - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 42 1 1 1 - - Verify "DUT send the success response" on the TH(Chip-tool) Log: - - [1653386385.348368][3801:3806] CHIP:DMG: StatusIB = - [1653386385.348419][3801:3806] CHIP:DMG: { - [1653386385.348465][3801:3806] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653386385.348512][3801:3806] CHIP:DMG: }, - [1653386385.348559][3801:3806] CHIP:DMG: - [1653386385.348599][3801:3806] CHIP:DMG: }, - [1653386385.348645][3801:3806] CHIP:DMG: - [1653386385.348681][3801:3806] CHIP:DMG: ], - disabled: true + command: "writeAttribute" + attribute: "EnableInsideStatusLED" + arguments: + value: 1 - label: "TH reads EnableInsideStatusLED attribute from DUT" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read enable-inside-status-led 1 1 - - Verify "EnableInsideStatusLED" on the TH(Chip-tool) Log: - - [1654682333.059815][3921:3926] CHIP:DMG: StatusIB = - [1654682333.059848][3921:3926] CHIP:DMG: { - [1654682333.059880][3921:3926] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654682333.059912][3921:3926] CHIP:DMG: }, - [1654682333.059945][3921:3926] CHIP:DMG: - [1654682333.059973][3921:3926] CHIP:DMG: }, - [1654682333.060005][3921:3926] CHIP:DMG: - [1654682333.060029][3921:3926] CHIP:DMG: }, - [1654682333.060060][3921:3926] CHIP:DMG: - [1654682333.060083][3921:3926] CHIP:DMG: ], - [1654682333.060112][3921:3926] CHIP:DMG: - disabled: true + PICS: DRLK.S.A002a + command: "readAttribute" + attribute: "EnableInsideStatusLED" + response: + value: 1 - label: "TH reads EnablePrivacyModeButton attribute from DUT" PICS: DRLK.S.A002b - verification: | - ./chip-tool doorlock read enable-privacy-mode-button 1 1 - - Verify " EnablePrivacyModeButton" on the TH(Chip-tool) Log: - - [1654682475.460532][3931:3936] CHIP:DMG: SuppressResponse = true, - [1654682475.460586][3931:3936] CHIP:DMG: InteractionModelRevision = 1 - [1654682475.460635][3931:3936] CHIP:DMG: } - [1654682475.460872][3931:3936] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_002B DataVersion: 3738767922 - [1654682475.460959][3931:3936] CHIP:TOO: EnablePrivacyModeButton: FALSE - disabled: true + command: "readAttribute" + attribute: "EnablePrivacyModeButton" + response: + value: 0 - label: "TH writes EnablePrivacy ModeButton attribute as true" PICS: DRLK.S.A002b - verification: | - ./chip-tool doorlock write enable-privacy-mode-button 1 1 1 - - Verify " DUT send the success response" on the TH(Chip-tool) Log: - - [1654682528.961800][3939:3944] CHIP:DMG: StatusIB = - [1654682528.961832][3939:3944] CHIP:DMG: { - [1654682528.961874][3939:3944] CHIP:DMG: status = 0x00 (SUCCESS), - [1654682528.961916][3939:3944] CHIP:DMG: }, - [1654682528.961949][3939:3944] CHIP:DMG: - [1654682528.961984][3939:3944] CHIP:DMG: }, - [1654682528.962014][3939:3944] CHIP:DMG: - [1654682528.962047][3939:3944] CHIP:DMG: ], - [1654682528.962076][3939:3944] CHIP:DMG: - [1654682528.962110][3939:3944] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + command: "writeAttribute" + attribute: "EnablePrivacyModeButton" + arguments: + value: 1 - label: "TH reads EnablePrivacyModeButton attribute from DUT" - verification: | - ./chip-tool doorlock read enable-privacy-mode-button 1 1 - - Verify " EnablePrivacyModeButton" on the TH(Chip-tool) Log: - - [1654682565.141153][3948:3953] CHIP:DMG: SuppressResponse = true, - [1654682565.141195][3948:3953] CHIP:DMG: InteractionModelRevision = 1 - [1654682565.141233][3948:3953] CHIP:DMG: } - [1654682565.141434][3948:3953] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_002B DataVersion: 3738767923 - [1654682565.141510][3948:3953] CHIP:TOO: EnablePrivacyModeButton: TRUE - disabled: true + PICS: DRLK.S.A002b + command: "readAttribute" + attribute: "EnablePrivacyModeButton" + response: + value: 1 - label: "TH reads LocalProgrammingFeatures attribute from DUT TH saves the values as Current_LocalProgramming Features value" PICS: DRLK.S.A002c - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read local-programming-features 1 1 - - Verify " LocalProgrammingFeatures" on the TH(Chip-tool) Log: + command: "readAttribute" + attribute: "LocalProgrammingFeatures" + response: + saveAs: Current_LocalProgramming_Features + constraints: + type: bitmap8 + minValue: 0 + maxValue: 3 - [1658987637.292491][2794:2799] CHIP:DMG: StatusIB = - [1658987637.292530][2794:2799] CHIP:DMG: { - [1658987637.292568][2794:2799] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1658987637.292605][2794:2799] CHIP:DMG: }, - [1658987637.292642][2794:2799] CHIP:DMG: - [1658987637.292675][2794:2799] CHIP:DMG: }, - [1658987637.292713][2794:2799] CHIP:DMG: - [1658987637.292741][2794:2799] CHIP:DMG: }, - [1658987637.292774][2794:2799] CHIP:DMG: - [1658987637.292798][2794:2799] CHIP:DMG: ], - [1658987637.292828][2794:2799] CHIP:DMG: - [1658987637.292852][2794:2799] CHIP:DMG: SuppressResponse = true, - [1658987637.292878][2794:2799] CHIP:DMG: InteractionModelRevision = 1 - [1658987637.292901][2794:2799] CHIP:DMG: } - [1658987637.293006][2794:2799] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true - - - label: "TH reads LocalProgrammingFeatures attribute from DUT" - PICS: DRLK.S.A002c && DRLK.S.A0028 && DRLK.S.A002c - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read local-programming-features 1 1 - - Verify " LocalProgrammingFeatures" on the TH(Chip-tool) Log: + - label: + "TH reads LocalProgrammingFeatures attribute from DUT. + DRLK.S.A0028(EnableLocalProgramming) is True." + PICS: DRLK.S.A002c && DRLK.S.A0028.ReadOnly + command: "readAttribute" + attribute: "LocalProgrammingFeatures" + response: + constraints: + type: bitmap8 + hasMasksSet: [0x1, 0x2, 0x4, 0x8] - [1658987637.292491][2794:2799] CHIP:DMG: StatusIB = - [1658987637.292530][2794:2799] CHIP:DMG: { - [1658987637.292568][2794:2799] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1658987637.292605][2794:2799] CHIP:DMG: }, - [1658987637.292642][2794:2799] CHIP:DMG: - [1658987637.292675][2794:2799] CHIP:DMG: }, - [1658987637.292713][2794:2799] CHIP:DMG: - [1658987637.292741][2794:2799] CHIP:DMG: }, - [1658987637.292774][2794:2799] CHIP:DMG: - [1658987637.292798][2794:2799] CHIP:DMG: ], - [1658987637.292828][2794:2799] CHIP:DMG: - [1658987637.292852][2794:2799] CHIP:DMG: SuppressResponse = true, - [1658987637.292878][2794:2799] CHIP:DMG: InteractionModelRevision = 1 - [1658987637.292901][2794:2799] CHIP:DMG: } - [1658987637.293006][2794:2799] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + - label: + "TH reads LocalProgrammingFeatures attribute from DUT. + DRLK.S.A0028(EnableLocalProgramming) is False." + PICS: DRLK.S.A002c && !DRLK.S.A0028.ReadOnly + command: "readAttribute" + attribute: "LocalProgrammingFeatures" + response: + constraints: + type: bitmap8 + hasMasksClear: [0x1, 0x2, 0x4, 0x8] - label: "TH writes to LocalProgrammingFeatures to disable all the features (Change all bits to 0)" - PICS: DRLK.S.A002c && DRLK.S.A0028 && DRLK.S.A002c + PICS: + DRLK.S.A002c && DRLK.S.A0028.ReadOnly && DRLK.S.A002c.Write && + PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1670,10 +1122,19 @@ tests: [1658987893.199873][2822:2827] CHIP:DMG: } [1658987893.199968][2822:2827] CHIP:DMG: WriteClient moving to [AwaitingDe] [1658987893.200012][2822:2827] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH sets the EnableLocalProgramming attribute to False" - PICS: DRLK.S.A002c && DRLK.S.A0028 && DRLK.S.A002c + PICS: + DRLK.S.A002c && DRLK.S.A0028.Write && DRLK.S.A002c.Write && + PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1716,10 +1177,19 @@ tests: [1658987637.292878][2794:2799] CHIP:DMG: InteractionModelRevision = 1 [1658987637.292901][2794:2799] CHIP:DMG: } [1658987637.293006][2794:2799] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH sets the EnableLocalProgramming attribute to True" - PICS: DRLK.S.A002c && DRLK.S.A0028 && DRLK.S.A002c + PICS: + DRLK.S.A002c && DRLK.S.A0028.Write && DRLK.S.A002c.Write && + PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1763,12 +1233,19 @@ tests: [1658987637.292878][2794:2799] CHIP:DMG: InteractionModelRevision = 1 [1658987637.292901][2794:2799] CHIP:DMG: } [1658987637.293006][2794:2799] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH sends a write message to change any one of the bits of the LocalProgrammingFeatures." - PICS: DRLK.S.A002c && DRLK.S.A002c + PICS: DRLK.S.A002c && DRLK.S.A002c.Write && PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1789,12 +1266,19 @@ tests: [1658988308.728423][2866:2871] CHIP:DMG: } [1658988308.728500][2866:2871] CHIP:DMG: WriteClient moving to [AwaitingDe] [1658988308.728539][2866:2871] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH sends a write message to change any one of the bits of the LocalProgrammingFeatures." - PICS: DRLK.S.A002c && DRLK.S.A002c + PICS: DRLK.S.A002c && DRLK.S.A002c.ReadOnly && PICS_SKIP_SAMPLE_APP verification: | This is an Optional attribute, so its not compulsory to get the expected outcome @@ -1815,261 +1299,205 @@ tests: [1658988387.295632][2874:2879] CHIP:DMG: } [1658988387.295719][2874:2879] CHIP:DMG: WriteClient moving to [AwaitingDe] [1658988387.295760][2874:2879] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH reads WrongCodeEntry Limit attribute from DUT TH saves the values as Current_WrongCode EntryLimit value" - PICS: DRLK.S.F00 || DRLK.S.F01 && DRLK.S.A0030 - verification: | - ./chip-tool doorlock read wrong-code-entry-limit 1 1 - - Verify " WrongCodeEntry Limit" on the TH(Chip-tool) Log: - - [1654682697.191640][3970:3975] CHIP:DMG: SuppressResponse = true, - [1654682697.191686][3970:3975] CHIP:DMG: InteractionModelRevision = 1 - [1654682697.191728][3970:3975] CHIP:DMG: } - [1654682697.191939][3970:3975] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0030 DataVersion: 3738767923 - [1654682697.192045][3970:3975] CHIP:TOO: WrongCodeEntryLimit: 3 - disabled: true + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0030 + command: "readAttribute" + attribute: "WrongCodeEntryLimit" + response: + saveAs: Current_WrongCode_EntryLimit + constraints: + type: int8u + minValue: 1 + maxValue: 255 - label: "TH writes WrongCodeEntryLimit attribute as 8" - verification: | - ./chip-tool doorlock write wrong-code-entry-limit 8 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0030.Write + command: "writeAttribute" + attribute: "WrongCodeEntryLimit" + arguments: + value: 8 - [1654682751.960343][3981:3987] CHIP:DMG: StatusIB = - [1654682751.960389][3981:3987] CHIP:DMG: { - [1654682751.960433][3981:3987] CHIP:DMG: status = 0x00 (SUCCESS), - [1654682751.960483][3981:3987] CHIP:DMG: }, - [1654682751.960528][3981:3987] CHIP:DMG: - [1654682751.960568][3981:3987] CHIP:DMG: }, - [1654682751.960616][3981:3987] CHIP:DMG: - [1654682751.960650][3981:3987] CHIP:DMG: ], - [1654682751.960694][3981:3987] CHIP:DMG: - disabled: true + - label: "TH writes WrongCodeEntryLimit attribute as 8" + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && !DRLK.S.A0030.Write + command: "writeAttribute" + attribute: "WrongCodeEntryLimit" + arguments: + value: 8 + response: + error: UNSUPPORTED_WRITE - label: "TH reads WrongCode EntryLimit attribute" - verification: | - ./chip-tool doorlock read wrong-code-entry-limit 1 1 - - Verify " WrongCodeEntry Limit" on the TH(Chip-tool) Log: + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0030.Write + command: "readAttribute" + attribute: "WrongCodeEntryLimit" + response: + value: 8 - [1654682801.226369][3989:3994] CHIP:DMG: SuppressResponse = true, - [1654682801.226394][3989:3994] CHIP:DMG: InteractionModelRevision = 1 - [1654682801.226417][3989:3994] CHIP:DMG: } - [1654682801.226551][3989:3994] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0030 DataVersion: 3738767924 - [1654682801.226627][3989:3994] CHIP:TOO: WrongCodeEntryLimit: 8 - disabled: true + - label: "TH reads WrongCode EntryLimit attribute" + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && !DRLK.S.A0030.Write + command: "readAttribute" + attribute: "WrongCodeEntryLimit" + response: + value: Current_WrongCode_EntryLimit - label: "TH reads UserCodeTemporary DisableTime attribute from DUT TH saves the values as Current_UserCode TemporaryDisableTime" - PICS: DRLK.S.F00 || DRLK.S.F01 && DRLK.S.A0031 - verification: | - ./chip-tool doorlock read user-code-temporary-disable-time 1 1 + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0031 + command: "readAttribute" + attribute: "UserCodeTemporaryDisableTime" + response: + saveAs: Current_UserCode_TemporaryDisableTime + constraints: + type: int8u + minValue: 1 + maxValue: 255 - Verify " UserCodeTemporary Disable" on the TH(Chip-tool) Log: - - [1654682846.758616][3996:4001] CHIP:DMG: SuppressResponse = true, - [1654682846.758658][3996:4001] CHIP:DMG: InteractionModelRevision = 1 - [1654682846.758713][3996:4001] CHIP:DMG: } - [1654682846.759061][3996:4001] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0031 DataVersion: 3738767924 - [1654682846.759187][3996:4001] CHIP:TOO: UserCodeTemporaryDisableTime: 10 - disabled: true + - label: "TH writes UserCodeTemporaryDisableTime attribute as 120" + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0031.Write + command: "writeAttribute" + attribute: "UserCodeTemporaryDisableTime" + arguments: + value: 120 - label: "TH writes UserCodeTemporaryDisableTime attribute as 120" - verification: | - ./chip-tool doorlock write user-code-temporary-disable-time 120 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: - - [1654682895.502869][4011:4016] CHIP:DMG: StatusIB = - [1654682895.502946][4011:4016] CHIP:DMG: { - [1654682895.503021][4011:4016] CHIP:DMG: status = 0x00 (SUCCESS), - [1654682895.503087][4011:4016] CHIP:DMG: }, - [1654682895.503153][4011:4016] CHIP:DMG: - [1654682895.503210][4011:4016] CHIP:DMG: }, - [1654682895.503273][4011:4016] CHIP:DMG: - [1654682895.503411][4011:4016] CHIP:DMG: ], - [1654682895.503475][4011:4016] CHIP:DMG: - [1654682895.503526][4011:4016] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && !DRLK.S.A0031.Write + command: "writeAttribute" + attribute: "UserCodeTemporaryDisableTime" + arguments: + value: 120 + response: + error: UNSUPPORTED_WRITE - label: "TH reads UserCodeTemporary DisableTime attribute" - verification: | - ./chip-tool doorlock read user-code-temporary-disable-time 1 1 - - Verify " UserCodeTemporary Disable" on the TH(Chip-tool) Log: + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && DRLK.S.A0031.Write + command: "readAttribute" + attribute: "UserCodeTemporaryDisableTime" + response: + value: 120 - [1654682975.285821][4032:4037] CHIP:DMG: SuppressResponse = true, - [1654682975.285867][4032:4037] CHIP:DMG: InteractionModelRevision = 1 - [1654682975.285909][4032:4037] CHIP:DMG: } - [1654682975.286120][4032:4037] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0031 DataVersion: 3738767927 - [1654682975.286230][4032:4037] CHIP:TOO: UserCodeTemporaryDisableTime: 120 - disabled: true + - label: "TH reads UserCodeTemporary DisableTime attribute" + PICS: ( DRLK.S.F00 || DRLK.S.F01 ) && !DRLK.S.A0031.Write + command: "readAttribute" + attribute: "UserCodeTemporaryDisableTime" + response: + value: Current_UserCode_TemporaryDisableTime - label: "TH reads RequirePINfor RemoteOperation attribute from DUT" PICS: DRLK.S.F07 && DRLK.S.F00 && DRLK.S.A0033 - verification: | - ./chip-tool doorlock read require-pinfor-remote-operation 1 1 + command: "readAttribute" + attribute: "RequirePINforRemoteOperation" + response: + value: 0 + saveAs: Current_RequirePINFor_RemoteOperation - Verify " RequirePINfor RemoteOperation" on the TH(Chip-tool) Log: - - [1656335145.428166][4073:4078] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0033 DataVersion: 542587181 - [1656335145.428293][4073:4078] CHIP:TOO: RequirePINforRemoteOperation: FALSE - [1656335145.428485][4073:4078] CHIP:EM: Sending Standalone Ack for MessageCounter:10738875 on exchange 23314i - disabled: true + - label: "TH writes RequirePINfor RemoteOperation attribute as true" + PICS: DRLK.S.F07 && DRLK.S.F00 && DRLK.S.A0033.Write + command: "writeAttribute" + attribute: "RequirePINforRemoteOperation" + arguments: + value: 1 - label: "TH writes RequirePINfor RemoteOperation attribute as true" - verification: | - ./chip-tool doorlock write require-pinfor-remote-operation 1 1 1 - - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: - - [1655211439.627206][18643:18648] CHIP:DMG: ReportDataMessage = - [1655211439.627269][18643:18648] CHIP:DMG: { - [1655211439.627323][18643:18648] CHIP:DMG: AttributeReportIBs = - [1655211439.627399][18643:18648] CHIP:DMG: [ - [1655211439.627459][18643:18648] CHIP:DMG: AttributeReportIB = - [1655211439.627538][18643:18648] CHIP:DMG: { - [1655211439.627601][18643:18648] CHIP:DMG: AttributeStatusIB = - [1655211439.627678][18643:18648] CHIP:DMG: { - [1655211439.627751][18643:18648] CHIP:DMG: AttributePathIB = - [1655211439.627831][18643:18648] CHIP:DMG: { - [1655211439.627914][18643:18648] CHIP:DMG: Endpoint = 0x1, - [1655211439.628007][18643:18648] CHIP:DMG: Cluster = 0x101, - [1655211439.628099][18643:18648] CHIP:DMG: Attribute = 0x0000_0033, - [1655211439.628177][18643:18648] CHIP:DMG: } - [1655211439.628264][18643:18648] CHIP:DMG: - [1655211439.628343][18643:18648] CHIP:DMG: StatusIB = - [1655211439.628424][18643:18648] CHIP:DMG: { - [1655211439.628508][18643:18648] CHIP:DMG: status = 0x00 (SUCCESS), - [1655211439.628596][18643:18648] CHIP:DMG: }, - [1655211439.628676][18643:18648] CHIP:DMG: - [1655211439.628745][18643:18648] CHIP:DMG: }, - [1655211439.628826][18643:18648] CHIP:DMG: - [1655211439.628887][18643:18648] CHIP:DMG: }, - [1655211439.628959][18643:18648] CHIP:DMG: - [1655211439.629016][18643:18648] CHIP:DMG: ], - [1655211439.629087][18643:18648] CHIP:DMG: - [1655211439.629145][18643:18648] CHIP:DMG: SuppressResponse = true, - [1655211439.629207][18643:18648] CHIP:DMG: InteractionModelRevision = 1 - [1655211439.629263][18643:18648] CHIP:DMG: } - disabled: true + PICS: DRLK.S.F07 && DRLK.S.F00 && !DRLK.S.A0033.Write + command: "writeAttribute" + attribute: "RequirePINforRemoteOperation" + arguments: + value: 1 + response: + error: UNSUPPORTED_WRITE - label: "TH reads RequirePINfor RemoteOperation attribute" - verification: | - ./chip-tool doorlock read require-pinfor-remote-operation 1 1 - - Verify " RequirePINfor RemoteOperation" on the TH(Chip-tool) Log: + PICS: DRLK.S.F07 && DRLK.S.F00 && DRLK.S.A0033.Write + command: "readAttribute" + attribute: "RequirePINforRemoteOperation" + response: + value: 1 - [1656335583.516419][4104:4109] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0033 DataVersion: 542587182 - [1656335583.516511][4104:4109] CHIP:TOO: RequirePINforRemoteOperation: TRUE - [1656335583.516675][4104:4109] CHIP:EM: Sending Standalone Ack for MessageCounter:11532501 on exchange 26372i - disabled: true + - label: "TH reads RequirePINfor RemoteOperation attribute" + PICS: DRLK.S.F07 && DRLK.S.F00 && !DRLK.S.A0033.Write + command: "readAttribute" + attribute: "RequirePINforRemoteOperation" + response: + value: Current_RequirePINFor_RemoteOperation - label: "TH reads ExpiringUserTimeOut attribute from DUT TH saves the values as Current_ExpiringUserTimeOut" PICS: DRLK.S.F08 && DRLK.S.A0035 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read expiring-user-timeout 1 1 - - Verify " ExpiringUserTimeOut" on the TH(Chip-tool) Log: - - [1654683235.889077][4073:4078] CHIP:DMG: StatusIB = - [1654683235.889118][4073:4078] CHIP:DMG: { - [1654683235.889152][4073:4078] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654683235.889190][4073:4078] CHIP:DMG: }, - [1654683235.889227][4073:4078] CHIP:DMG: - [1654683235.889262][4073:4078] CHIP:DMG: }, - [1654683235.889298][4073:4078] CHIP:DMG: - [1654683235.889326][4073:4078] CHIP:DMG: }, - [1654683235.889359][4073:4078] CHIP:DMG: - [1654683235.889383][4073:4078] CHIP:DMG: ], - disabled: true + command: "readAttribute" + attribute: "ExpiringUserTimeout" + response: + saveAs: Current_ExpiringUserTimeOut + constraints: + type: int16u + minValue: 1 + maxValue: 2880 - label: "TH writes ExpiringUserTimeout attribute as 10 minutes" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock write-by-id 53 10 1 1 + PICS: DRLK.S.F08 && DRLK.S.A0035.Write && DRLK.S.A0035 + command: "writeAttribute" + attribute: "ExpiringUserTimeout" + arguments: + value: 10 - Verify "DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1653386652.024354][3831:3836] CHIP:DMG: StatusIB = - [1653386652.024390][3831:3836] CHIP:DMG: { - [1653386652.024424][3831:3836] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1653386652.024460][3831:3836] CHIP:DMG: }, - [1653386652.024495][3831:3836] CHIP:DMG: - [1653386652.024525][3831:3836] CHIP:DMG: }, - [1653386652.024561][3831:3836] CHIP:DMG: - [1653386652.024588][3831:3836] CHIP:DMG: ], - disabled: true + - label: "TH writes ExpiringUserTimeout attribute as 10 minutes" + PICS: DRLK.S.F08 && !DRLK.S.A0035.Write && DRLK.S.A0035 + command: "writeAttribute" + attribute: "ExpiringUserTimeout" + arguments: + value: 10 + response: + error: UNSUPPORTED_WRITE - label: "TH reads ExpiringUserTimeout attribute" - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read expiring-user-timeout 1 1 - - Verify " ExpiringUserTimeOut" on the TH(Chip-tool) Log: + PICS: DRLK.S.F08 && DRLK.S.A0035.Write && DRLK.S.A0035 + command: "readAttribute" + attribute: "ExpiringUserTimeout" + response: + value: 10 - [1654683235.889077][4073:4078] CHIP:DMG: StatusIB = - [1654683235.889118][4073:4078] CHIP:DMG: { - [1654683235.889152][4073:4078] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1654683235.889190][4073:4078] CHIP:DMG: }, - [1654683235.889227][4073:4078] CHIP:DMG: - [1654683235.889262][4073:4078] CHIP:DMG: }, - [1654683235.889298][4073:4078] CHIP:DMG: - [1654683235.889326][4073:4078] CHIP:DMG: }, - [1654683235.889359][4073:4078] CHIP:DMG: - [1654683235.889383][4073:4078] CHIP:DMG: ], - disabled: true + - label: "TH reads ExpiringUserTimeout attribute" + PICS: DRLK.S.F08 && !DRLK.S.A0035.Write && DRLK.S.A0035 + command: "readAttribute" + attribute: "ExpiringUserTimeout" + response: + value: Current_ExpiringUserTimeOut - label: "TH reads NumberOfCredentials SupportedPerUser attribute from DUT" PICS: DRLK.S.F08 && DRLK.S.A001c - verification: | - ./chip-tool doorlock read number-of-credentials-supported-per-user 1 1 - - Verify " NumberOfCredentials SupportedPerUser" on the TH(Chip-tool) Log: - - [1654683489.274961][4132:4137] CHIP:DMG: SuppressResponse = true, - [1654683489.275002][4132:4137] CHIP:DMG: InteractionModelRevision = 1 - [1654683489.275040][4132:4137] CHIP:DMG: } - [1654683489.275252][4132:4137] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001C DataVersion: 3738767928 - [1654683489.275410][4132:4137] CHIP:TOO: NumberOfCredentialsSupportedPerUser: 5 - disabled: true + command: "readAttribute" + attribute: "NumberOfCredentialsSupportedPerUser" + response: + saveAs: NumberOfCredentialsSupportedPerUserValue + constraints: + type: int8u + minValue: 0 + maxValue: 255 - label: "TH writes NumberOfCredentials SupportedPerUser attribute as 85" - verification: | - ./chip-tool doorlock write-by-id 28 85 1 1 - Verify " DUT responds with UNSUPPORTED_WRITE" on the TH(Chip-tool) Log: - - [1654683627.680196][4148:4153] CHIP:DMG: StatusIB = - [1654683627.680252][4148:4153] CHIP:DMG: { - [1654683627.680306][4148:4153] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), - [1654683627.680353][4148:4153] CHIP:DMG: }, - [1654683627.680409][4148:4153] CHIP:DMG: - [1654683627.680444][4148:4153] CHIP:DMG: }, - [1654683627.680497][4148:4153] CHIP:DMG: - [1654683627.680529][4148:4153] CHIP:DMG: ], - [1654683627.680580][4148:4153] CHIP:DMG: - [1654683627.680612][4148:4153] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + PICS: DRLK.S.F08 && DRLK.S.A001c + command: "writeAttribute" + attribute: "NumberOfCredentialsSupportedPerUser" + arguments: + value: 85 + response: + error: UNSUPPORTED_WRITE - label: "TH reads NumberOfCredentials SupportedPerUser attribute from DUT" - verification: | - ./chip-tool doorlock read number-of-credentials-supported-per-user 1 1 - Verify " NumberOfCredentials SupportedPerUser" on the TH(Chip-tool) Log: - - [1654683489.274961][4132:4137] CHIP:DMG: SuppressResponse = true, - [1654683489.275002][4132:4137] CHIP:DMG: InteractionModelRevision = 1 - [1654683489.275040][4132:4137] CHIP:DMG: } - [1654683489.275252][4132:4137] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_001C DataVersion: 3738767928 - [1654683489.275410][4132:4137] CHIP:TOO: NumberOfCredentialsSupportedPerUser: 5 - disabled: true + PICS: DRLK.S.F08 && DRLK.S.A001c + command: "readAttribute" + attribute: "NumberOfCredentialsSupportedPerUser" + response: + value: NumberOfCredentialsSupportedPerUserValue diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_4.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_4.yaml index ebedeffaed3e0a..034b031df0d1bb 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_4.yaml @@ -127,15 +127,31 @@ tests: - name: "NextCredentialIndex" value: null + - label: "TH writes AutoRelockTime attribute value as 10 seconds on the DUT" + PICS: DRLK.S.A0023.Write && PICS_SDK_CI_ONLY + command: "writeAttribute" + attribute: "AutoRelockTime" + arguments: + value: 10 + - label: "TH writes AutoRelockTime attribute value as 60 seconds on the DUT" - PICS: DRLK.S.A0023 + PICS: DRLK.S.A0023.Write && PICS_SKIP_SAMPLE_APP command: "writeAttribute" attribute: "AutoRelockTime" arguments: value: 60 + - label: "TH writes AutoRelockTime attribute value as 10 seconds on the DUT" + PICS: PICS_SDK_CI_ONLY && !DRLK.S.A0023.Write + command: "writeAttribute" + attribute: "AutoRelockTime" + arguments: + value: 10 + response: + error: UNSUPPORTED_WRITE + - label: "TH writes AutoRelockTime attribute value as 60 seconds on the DUT" - PICS: " !DRLK.S.A0023 " + PICS: PICS_SKIP_SAMPLE_APP && !DRLK.S.A0023.Write command: "writeAttribute" attribute: "AutoRelockTime" arguments: @@ -143,8 +159,19 @@ tests: response: error: UNSUPPORTED_WRITE + - label: "TH sends the Unlock with Timeout argument value as 10 seconds" + PICS: DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY + command: "UnlockWithTimeout" + timedInteractionTimeoutMs: 1000 + arguments: + values: + - name: "Timeout" + value: 10 + - name: "PINCode" + value: "123456" + - label: "TH sends the Unlock with Timeout argument value as 60 seconds" - PICS: DRLK.S.C03.Rsp + PICS: DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP command: "UnlockWithTimeout" timedInteractionTimeoutMs: 1000 arguments: @@ -154,14 +181,24 @@ tests: - name: "PINCode" value: "123456" - - label: "Wait 60s" - PICS: DRLK.S.C03.Rsp + - label: "Wait for AutoRelockTime Expires" + cluster: "DelayCommands" + command: "WaitForMs" + PICS: DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY + arguments: + values: + - name: "ms" + value: 11000 + + #https://github.com/project-chip/connectedhomeip/issues/27421#issuecomment-1603541308 + - label: "Wait for AutoRelockTime Expires" + PICS: DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 60000 + value: 70000 - label: "TH reads LockState attribute" PICS: DRLK.S.A0000 && DRLK.S.C03.Rsp diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml index 40aa4276f0fc99..9160a2b9c416cf 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml @@ -11,10 +11,9 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 116.2.8. [TC-DRLK-2.8] Verification for the following Commands - Set User, + 121.2.8. [TC-DRLK-2.8] Verification for the following Commands - Set User, Get User, Get User Response, Clear User [DUT-Server] PICS: @@ -22,311 +21,280 @@ PICS: config: nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 + cluster: "Door Lock" + endpoint: 1 tests: - - label: "Pre-Conditions" - verification: | - 1 TH is commissioned with the DUT - - 2 Lock device is the DUT - disabled: true + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId - label: "TH reads NumberOfTotalUsers Supported attribute and saves for future use." PICS: DRLK.S.F08 && DRLK.S.A0011 - verification: | - ./chip-tool doorlock read number-of-total-users-supported 1 1 - Verify " NumberOfTotal UsersSupported" on the TH(Chip-tool) Log: - - [1654694451.295683][4985:4990] CHIP:DMG: - [1654694451.295743][4985:4990] CHIP:DMG: SuppressResponse = true, - [1654694451.295796][4985:4990] CHIP:DMG: InteractionModelRevision = 1 - [1654694451.295853][4985:4990] CHIP:DMG: } - [1654694451.296130][4985:4990] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Attribute 0x0000_0011 DataVersion: 1413324060 - [1654694451.296269][4985:4990] CHIP:TOO: NumberOfTotalUsersSupported: 10 - disabled: true + command: "readAttribute" + attribute: "NumberOfTotalUsersSupported" + response: + saveAs: Current_NumberOfTotalUsersSupported + constraints: + minValue: 0 + maxValue: 65534 - label: "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 0 CredentialRule as 0" PICS: DRLK.S.F08 && DRLK.S.C1a.Rsp - verification: | - ./chip-tool doorlock set-user 0 1 xxx 6452 1 0 0 1 1 --timedInteractionTimeoutMs 1000 - Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: - - [1655114915.892667][26101:26106] CHIP:DMG: { - [1655114915.892724][26101:26106] CHIP:DMG: suppressResponse = false, - [1655114915.892784][26101:26106] CHIP:DMG: InvokeResponseIBs = - [1655114915.892858][26101:26106] CHIP:DMG: [ - [1655114915.892917][26101:26106] CHIP:DMG: InvokeResponseIB = - [1655114915.892995][26101:26106] CHIP:DMG: { - [1655114915.893059][26101:26106] CHIP:DMG: CommandStatusIB = - [1655114915.893135][26101:26106] CHIP:DMG: { - [1655114915.893206][26101:26106] CHIP:DMG: CommandPathIB = - [1655114915.893285][26101:26106] CHIP:DMG: { - [1655114915.893366][26101:26106] CHIP:DMG: EndpointId = 0x1, - [1655114915.893459][26101:26106] CHIP:DMG: ClusterId = 0x101, - [1655114915.893519][26101:26106] CHIP:DMG: CommandId = 0x1a, - [1655114915.893578][26101:26106] CHIP:DMG: }, - [1655114915.893644][26101:26106] CHIP:DMG: - [1655114915.893699][26101:26106] CHIP:DMG: StatusIB = - [1655114915.893758][26101:26106] CHIP:DMG: { - [1655114915.893819][26101:26106] CHIP:DMG: status = 0x00 (SUCCESS), - [1655114915.893883][26101:26106] CHIP:DMG: }, - [1655114915.893937][26101:26106] CHIP:DMG: - [1655114915.893989][26101:26106] CHIP:DMG: }, - [1655114915.894049][26101:26106] CHIP:DMG: - [1655114915.894098][26101:26106] CHIP:DMG: }, - [1655114915.894153][26101:26106] CHIP:DMG: - [1655114915.894197][26101:26106] CHIP:DMG: ], - [1655114915.894250][26101:26106] CHIP:DMG: - [1655114915.894294][26101:26106] CHIP:DMG: InteractionModelRevision = 1 - [1655114915.894337][26101:26106] CHIP:DMG: }, - [1655114915.894437][26101:26106] CHIP:DMG: Received Command Response Status for Endpoint=1 - disabled: true + command: "SetUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "OperationType" + value: 0 + - name: "UserIndex" + value: 1 + - name: "UserName" + value: "xxx" + - name: "UserUniqueID" + value: 6452 + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 0 + - name: "CredentialRule" + value: 0 - label: "TH sends Get User Command to DUT with UserIndex as 1" PICS: DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx - verification: | - ./chip-tool doorlock get-user 1 1 1 - Verify " DUT responds with Get User Response" on the TH(Chip-tool) Log: - - [1655114978.939527][26110:26115] CHIP:DMG: }, - [1655114978.939725][26110:26115] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001C - [1655114978.939817][26110:26115] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_001C - [1655114978.939945][26110:26115] CHIP:TOO: GetUserResponse: { - [1655114978.940013][26110:26115] CHIP:TOO: userIndex: 1 - [1655114978.940063][26110:26115] CHIP:TOO: userName: xxx - [1655114978.940114][26110:26115] CHIP:TOO: userUniqueId: 6452 - [1655114978.940164][26110:26115] CHIP:TOO: userStatus: 1 - [1655114978.940212][26110:26115] CHIP:TOO: userType: 0 - [1655114978.940260][26110:26115] CHIP:TOO: credentialRule: 0 - [1655114978.940309][26110:26115] CHIP:TOO: credentials: null - [1655114978.940357][26110:26115] CHIP:TOO: creatorFabricIndex: 3 - [1655114978.940406][26110:26115] CHIP:TOO: lastModifiedFabricIndex: 3 - [1655114978.940455][26110:26115] CHIP:TOO: nextUserIndex: null - [1655114978.940503][26110:26115] CHIP:TOO: } - disabled: true + command: "GetUser" + arguments: + values: + - name: "UserIndex" + value: 1 + response: + values: + - name: "UserIndex" + value: 1 + - name: "UserName" + value: "xxx" + - name: "UserUniqueID" + value: 6452 + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 0 + - name: "CredentialRule" + value: 0 + - name: "Credentials" + value: [] + - name: "CreatorFabricIndex" + value: 1 + - name: "LastModifiedFabricIndex" + value: 1 + - name: "NextUserIndex" + value: null - label: "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 10 (Invalid value) CredentialRule as 3" PICS: DRLK.S.F08 && DRLK.S.C1a.Rsp - verification: | - ./chip-tool doorlock set-user 0 2 xxx 6451 1 10 3 1 1 --timedInteractionTimeoutMs 1000 - Verify " DUT sends INVALID_COMMAND " on the TH(Chip-tool) Log: - - [1657607954.930591][7988:7993] CHIP:DMG: { - [1657607954.930618][7988:7993] CHIP:DMG: suppressResponse = false, - [1657607954.930651][7988:7993] CHIP:DMG: InvokeResponseIBs = - [1657607954.930688][7988:7993] CHIP:DMG: [ - [1657607954.930716][7988:7993] CHIP:DMG: InvokeResponseIB = - [1657607954.930755][7988:7993] CHIP:DMG: { - [1657607954.930787][7988:7993] CHIP:DMG: CommandStatusIB = - [1657607954.930825][7988:7993] CHIP:DMG: { - [1657607954.930862][7988:7993] CHIP:DMG: CommandPathIB = - [1657607954.930900][7988:7993] CHIP:DMG: { - [1657607954.930942][7988:7993] CHIP:DMG: EndpointId = 0x1, - [1657607954.930984][7988:7993] CHIP:DMG: ClusterId = 0x101, - [1657607954.931027][7988:7993] CHIP:DMG: CommandId = 0x1a, - [1657607954.931065][7988:7993] CHIP:DMG: }, - [1657607954.931107][7988:7993] CHIP:DMG: - [1657607954.931142][7988:7993] CHIP:DMG: StatusIB = - [1657607954.931180][7988:7993] CHIP:DMG: { - [1657607954.931218][7988:7993] CHIP:DMG: status = 0x85 (INVALID_COMMAND), - [1657607954.931259][7988:7993] CHIP:DMG: }, - [1657607954.931296][7988:7993] CHIP:DMG: - [1657607954.931333][7988:7993] CHIP:DMG: }, - [1657607954.931371][7988:7993] CHIP:DMG: - [1657607954.931402][7988:7993] CHIP:DMG: }, - [1657607954.931439][7988:7993] CHIP:DMG: - [1657607954.931466][7988:7993] CHIP:DMG: ], - [1657607954.931500][7988:7993] CHIP:DMG: - [1657607954.931527][7988:7993] CHIP:DMG: InteractionModelRevision = 1 - [1657607954.931553][7988:7993] CHIP:DMG: }, - [1657607954.931617][7988:7993] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001A Status=0x85 - [1657607954.931654][7988:7993] CHIP:TOO: Error: IM Error 0x00000585: General error: 0x85 (INVALID_COMMAND) - disabled: true + command: "SetUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "OperationType" + value: 0 + - name: "UserIndex" + value: 2 + - name: "UserName" + value: "xxx" + - name: "UserUniqueID" + value: 6452 + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 10 + - name: "CredentialRule" + value: 3 + response: + error: INVALID_COMMAND - label: "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 (Same as step 2) UserName as xxx UserUniqueID as 8965 UserStatus as 1 UserType as 0 CredentialRule as 0" PICS: DRLK.S.F08 && DRLK.S.C1a.Rsp - verification: | - ./chip-tool doorlock set-user 0 1 xxx 8965 1 0 0 1 1 --timedInteractionTimeoutMs 1000 - - Verify " DUT sends OCCUPIED Status " on the TH(Chip-tool) Log: - - [1659349025.616076][17010:17015] CHIP:DMG: StatusIB = - [1659349025.616117][17010:17015] CHIP:DMG: { - [1659349025.616157][17010:17015] CHIP:DMG: status = 0x01 (FAILURE), - [1659349025.616199][17010:17015] CHIP:DMG: cluster-status = 0x3, - [1659349025.616234][17010:17015] CHIP:DMG: }, - [1659349025.616270][17010:17015] CHIP:DMG: - [1659349025.616302][17010:17015] CHIP:DMG: }, - [1659349025.616341][17010:17015] CHIP:DMG: - [1659349025.616371][17010:17015] CHIP:DMG: }, - [1659349025.616407][17010:17015] CHIP:DMG: - [1659349025.616435][17010:17015] CHIP:DMG: ], - [1659349025.616469][17010:17015] CHIP:DMG: - [1659349025.616495][17010:17015] CHIP:DMG: InteractionModelRevision = 1 - [1659349025.616521][17010:17015] CHIP:DMG: }, - [1659349025.616588][17010:17015] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001A Status=0x1 - [1659349025.616625][17010:17015] CHIP:TOO: Error: IM Error 0x00000603: Cluster-specific error: 0x03 - disabled: true + command: "SetUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "OperationType" + value: 0 + - name: "UserIndex" + value: 1 + - name: "UserName" + value: "xxx" + - name: "UserUniqueID" + value: 8965 + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 0 + - name: "CredentialRule" + value: 0 + response: + error: FAILURE + clusterError: 0x3 - label: "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL" PICS: DRLK.S.F08 && DRLK.S.C1a.Rsp - verification: | - ./chip-tool doorlock set-user 0 2 null null null null null 1 1 --timedInteractionTimeoutMs 1000 - Verify " DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1655115257.604810][26135:26140] CHIP:DMG: { - [1655115257.604859][26135:26140] CHIP:DMG: suppressResponse = false, - [1655115257.604911][26135:26140] CHIP:DMG: InvokeResponseIBs = - [1655115257.604975][26135:26140] CHIP:DMG: [ - [1655115257.605027][26135:26140] CHIP:DMG: InvokeResponseIB = - [1655115257.605094][26135:26140] CHIP:DMG: { - [1655115257.605147][26135:26140] CHIP:DMG: CommandStatusIB = - [1655115257.605213][26135:26140] CHIP:DMG: { - [1655115257.605273][26135:26140] CHIP:DMG: CommandPathIB = - [1655115257.605348][26135:26140] CHIP:DMG: { - [1655115257.605422][26135:26140] CHIP:DMG: EndpointId = 0x1, - [1655115257.605509][26135:26140] CHIP:DMG: ClusterId = 0x101, - [1655115257.605591][26135:26140] CHIP:DMG: CommandId = 0x1a, - [1655115257.605669][26135:26140] CHIP:DMG: }, - [1655115257.605755][26135:26140] CHIP:DMG: - [1655115257.605922][26135:26140] CHIP:DMG: StatusIB = - [1655115257.606006][26135:26140] CHIP:DMG: { - [1655115257.606088][26135:26140] CHIP:DMG: status = 0x00 (SUCCESS), - [1655115257.606168][26135:26140] CHIP:DMG: }, - [1655115257.606247][26135:26140] CHIP:DMG: - [1655115257.606317][26135:26140] CHIP:DMG: }, - [1655115257.606399][26135:26140] CHIP:DMG: - [1655115257.606460][26135:26140] CHIP:DMG: }, - [1655115257.606532][26135:26140] CHIP:DMG: - [1655115257.606590][26135:26140] CHIP:DMG: ], - [1655115257.606660][26135:26140] CHIP:DMG: - [1655115257.606718][26135:26140] CHIP:DMG: InteractionModelRevision = 1 - [1655115257.606774][26135:26140] CHIP:DMG: }, - disabled: true + command: "SetUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "OperationType" + value: 0 + - name: "UserIndex" + value: 2 + - name: "UserName" + value: null + - name: "UserUniqueID" + value: null + - name: "UserStatus" + value: null + - name: "UserType" + value: null + - name: "CredentialRule" + value: null - label: "TH sends Get User Command to DUT with UserIndex as 2" - verification: | - ./chip-tool doorlock get-user 2 1 1 - Verify " DUT responds with Get User Response " on the TH(Chip-tool) Log: - - - [1655375970.047000][3043:3048] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001C - [1655375970.047078][3043:3048] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_001C - [1655375970.047189][3043:3048] CHIP:TOO: GetUserResponse: { - [1655375970.047250][3043:3048] CHIP:TOO: userIndex: 2 - [1655375970.047295][3043:3048] CHIP:TOO: userName: - [1655375970.047339][3043:3048] CHIP:TOO: userUniqueId: null - [1655375970.047384][3043:3048] CHIP:TOO: userStatus: 1 - [1655375970.047429][3043:3048] CHIP:TOO: userType: 0 - [1655375970.047473][3043:3048] CHIP:TOO: credentialRule: 0 - [1655375970.047517][3043:3048] CHIP:TOO: credentials: null - [1655375970.047563][3043:3048] CHIP:TOO: creatorFabricIndex: 1 - [1655375970.047607][3043:3048] CHIP:TOO: lastModifiedFabricIndex: 1 - [1655375970.047651][3043:3048] CHIP:TOO: nextUserIndex: null - [1655375970.047712][3043:3048] CHIP:TOO: } - disabled: true + PICS: DRLK.S.C1a.Rsp && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx + command: "GetUser" + arguments: + values: + - name: "UserIndex" + value: 2 + response: + values: + - name: "UserIndex" + value: 2 + - name: "UserName" + value: "" + - name: "UserUniqueID" + value: null + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 0 + - name: "CredentialRule" + value: 0 + - name: "Credentials" + value: [] + - name: "CreatorFabricIndex" + value: 1 + - name: "LastModifiedFabricIndex" + value: 1 + - name: "NextUserIndex" + value: null - label: "TH sends Set User Command to DUT with the following values: OperationType as 2 UserIndex as 2 UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL" PICS: DRLK.S.F08 && DRLK.S.C1a.Rsp - verification: | - ./chip-tool doorlock set-user 2 2 null null null null null 1 1 --timedInteractionTimeoutMs 1000 - Verify " DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1654695125.813357][5126:5131] CHIP:DMG: StatusIB = - [1654695125.813426][5126:5131] CHIP:DMG: { - [1654695125.813495][5126:5131] CHIP:DMG: status = 0x00 (SUCCESS), - [1654695125.813565][5126:5131] CHIP:DMG: }, - [1654695125.813635][5126:5131] CHIP:DMG: - [1654695125.813695][5126:5131] CHIP:DMG: }, - [1654695125.813767][5126:5131] CHIP:DMG: - [1654695125.813820][5126:5131] CHIP:DMG: }, - [1654695125.813884][5126:5131] CHIP:DMG: - [1654695125.813934][5126:5131] CHIP:DMG: ], - [1654695125.813996][5126:5131] CHIP:DMG: - [1654695125.814046][5126:5131] CHIP:DMG: InteractionModelRevision = 1 - [1654695125.814095][5126:5131] CHIP:DMG: }, - disabled: true + command: "SetUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "OperationType" + value: 2 + - name: "UserIndex" + value: 2 + - name: "UserName" + value: null + - name: "UserUniqueID" + value: null + - name: "UserStatus" + value: null + - name: "UserType" + value: null + - name: "CredentialRule" + value: null - label: "TH sends Get User Command to DUT with the UserIndex as 2" PICS: DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx - verification: | - ./chip-tool doorlock get-user 2 1 1 - Verify " DUT sends Get User Response " on the TH(Chip-tool) Log: - - [1655123677.092511][27390:27395] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_001C - [1655123677.092651][27390:27395] CHIP:TOO: GetUserResponse: { - [1655123677.092729][27390:27395] CHIP:TOO: userIndex: 2 - [1655123677.092788][27390:27395] CHIP:TOO: userName: - [1655123677.092844][27390:27395] CHIP:TOO: userUniqueId: null - [1655123677.092904][27390:27395] CHIP:TOO: userStatus: 1 - [1655123677.092963][27390:27395] CHIP:TOO: userType: 0 - [1655123677.093020][27390:27395] CHIP:TOO: credentialRule: 0 - [1655123677.093078][27390:27395] CHIP:TOO: credentials: null - [1655123677.093135][27390:27395] CHIP:TOO: creatorFabricIndex: 1 - [1655123677.093193][27390:27395] CHIP:TOO: lastModifiedFabricIndex: 1 - [1655123677.093250][27390:27395] CHIP:TOO: nextUserIndex: null - [1655123677.093306][27390:27395] CHIP:TOO: } - disabled: true + command: "GetUser" + arguments: + values: + - name: "UserIndex" + value: 2 + response: + values: + - name: "UserIndex" + value: 2 + - name: "UserName" + value: "" + - name: "UserUniqueID" + value: null + - name: "UserStatus" + value: 1 + - name: "UserType" + value: 0 + - name: "CredentialRule" + value: 0 + - name: "Credentials" + value: [] + - name: "CreatorFabricIndex" + value: 1 + - name: "LastModifiedFabricIndex" + value: 1 + - name: "NextUserIndex" + value: null - label: "TH sends Clear User Command to DUT with the UserIndex as 1" PICS: DRLK.S.F08 && DRLK.S.C1d.Rsp - verification: | - ./chip-tool doorlock clear-user 1 1 1 --timedInteractionTimeoutMs 1000 - Verify "DUT sends SUCCESS response " on the TH(Chip-tool) Log: - - [1654696621.722147][5296:5301] CHIP:DMG: StatusIB = - [1654696621.722202][5296:5301] CHIP:DMG: { - [1654696621.722260][5296:5301] CHIP:DMG: status = 0x00 (SUCCESS), - [1654696621.722314][5296:5301] CHIP:DMG: }, - [1654696621.722368][5296:5301] CHIP:DMG: - [1654696621.722417][5296:5301] CHIP:DMG: }, - [1654696621.722473][5296:5301] CHIP:DMG: - [1654696621.722532][5296:5301] CHIP:DMG: }, - [1654696621.722610][5296:5301] CHIP:DMG: - [1654696621.722671][5296:5301] CHIP:DMG: ], - [1654696621.722737][5296:5301] CHIP:DMG: - [1654696621.722787][5296:5301] CHIP:DMG: InteractionModelRevision = 1 - [1654696621.722836][5296:5301] CHIP:DMG: }, - disabled: true + command: "ClearUser" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "UserIndex" + value: 1 - label: "TH sends Get User Command to DUT with the UserIndex as 1" PICS: DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx - verification: | - ./chip-tool doorlock get-user 1 1 1 --timedInteractionTimeoutMs 1000 - Verify " DUT sends Get User Response with NULL Values" on the TH(Chip-tool) Log: - - [1655376097.413458][3073:3078] CHIP:DMG: }, - [1655376097.413564][3073:3078] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001C - [1655376097.413640][3073:3078] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_001C - [1655376097.413732][3073:3078] CHIP:TOO: GetUserResponse: { - [1655376097.413789][3073:3078] CHIP:TOO: userIndex: 1 - [1655376097.413833][3073:3078] CHIP:TOO: userName: null - [1655376097.413875][3073:3078] CHIP:TOO: userUniqueId: null - [1655376097.413918][3073:3078] CHIP:TOO: userStatus: null - [1655376097.413959][3073:3078] CHIP:TOO: userType: null - [1655376097.414000][3073:3078] CHIP:TOO: credentialRule: null - [1655376097.414041][3073:3078] CHIP:TOO: credentials: null - [1655376097.414084][3073:3078] CHIP:TOO: creatorFabricIndex: null - [1655376097.414125][3073:3078] CHIP:TOO: lastModifiedFabricIndex: null - [1655376097.414169][3073:3078] CHIP:TOO: nextUserIndex: 2 - [1655376097.414211][3073:3078] CHIP:TOO: } - disabled: true + command: "GetUser" + arguments: + values: + - name: "UserIndex" + value: 1 + response: + values: + - name: "UserIndex" + value: 1 + - name: "UserName" + value: null + - name: "UserUniqueID" + value: null + - name: "UserStatus" + value: null + - name: "UserType" + value: null + - name: "CredentialRule" + value: null + - name: "Credentials" + value: null + - name: "CreatorFabricIndex" + value: null + - name: "LastModifiedFabricIndex" + value: null + - name: "NextUserIndex" + value: 2 diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml index 160439902b1ca8..439d9e32cb8eb6 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml @@ -193,31 +193,33 @@ tests: - name: "UserIndex" value: null - # Need OR condition support - label: "TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response command with status as DUPLICATE or OCCUPIED" - verification: | - ./chip-tool doorlock set-credential 0 '{ "credentialType" : 1, "credentialIndex" : 1 }' 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000 - - Verify "DUT sends Set Credential Response command with response as DUPLICATE or OCCUPIED" on the TH(Chip-tool) Log: - - [[1656506733.767451][27276:27281] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0023 - [1656506733.767542][27276:27281] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_0023 - [1656506733.767663][27276:27281] CHIP:TOO: SetCredentialResponse: { - [1656506733.767731][27276:27281] CHIP:TOO: status: 2 - [1656506733.767779][27276:27281] CHIP:TOO: userIndex: null - [1656506733.767826][27276:27281] CHIP:TOO: nextCredentialIndex: 2 - [1656506733.767871][27276:27281] CHIP:TOO: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + command: "SetCredential" + timedInteractionTimeoutMs: 10000 arguments: values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - name: "OperationType" + value: 0 + - name: "Credential" + value: { CredentialType: 1, CredentialIndex: 1 } + - name: "CredentialData" + value: "123456" + - name: "UserIndex" + value: 1 + - name: "UserStatus" + value: null + - name: "UserType" + value: null + response: + values: + - name: "Status" + constraints: + anyOf: [0x2, 0x3] + - name: "UserIndex" + value: null - label: "TH sends Set Credential Command to DUT and Verify that the DUT sends @@ -245,6 +247,35 @@ tests: - name: "expectedValue" value: "y" + #- label: + # "TH sends Set Credential Command to DUT and Verify that the DUT sends + # Set Credential Response command with response as OCCUPIED if the + # CredentialIndex is repeated" + # PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + # command: "SetCredential" + # timedInteractionTimeoutMs: 10000 + # arguments: + # values: + # - name: "OperationType" + # value: 0 + # - name: "Credential" + # value: { CredentialType: 1, CredentialIndex: 1 } + # - name: "CredentialData" + # value: "123456" + # - name: "UserIndex" + # value: 1 + # - name: "UserStatus" + # value: null + # - name: "UserType" + # value: null + # response: + # values: + # - name: "Status" + # constraints: + # anyOf: [0x2, 0x3] + # - name: "UserIndex" + # value: null + #Issue 19990 expected response OCCUPIED, but CHIP Tool Verification Steps shows status: 2 fix script once the issue is fixed. - label: "TH sends Set Credential Command to DUT and Verify that the DUT sends @@ -274,6 +305,34 @@ tests: - name: "expectedValue" value: "y" + #- label: + # "TH sends Set Credential Command to DUT and Verify that the DUT sends + # Set Credential Response command with response as OCCUPIED if the + # CredentialIndex is repeated" + # PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + # command: "SetCredential" + # timedInteractionTimeoutMs: 10000 + # arguments: + # values: + # - name: "OperationType" + # value: 2 + # - name: "Credential" + # value: { CredentialType: 1, CredentialIndex: 3 } + # - name: "CredentialData" + # value: "123456" + # - name: "UserIndex" + # value: 1 + # - name: "UserStatus" + # value: null + # - name: "UserType" + # value: null + # response: + # values: + # - name: "Status" + # value: 0x3 + # - name: "UserIndex" + # value: null + - label: "TH sends Clear Credential Command to DUT" PICS: DRLK.S.F08 && DRLK.S.C26.Rsp command: "ClearCredential" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml deleted file mode 100644 index 27f3a5e87e6cc3..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml +++ /dev/null @@ -1,2834 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 113.3.1. [TC-DRLK-3.1] Attributes check [DUT - Client] - -PICS: - - DRLK.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "Precondition" - verification: | - TH is commissioned with the DUT - disabled: true - - - label: "DUT reads LockState from the TH." - PICS: DRLK.C.A0000 - verification: | - ./chip-tool doorlock read lock-state 1 1 - - Verify the " LockState response" on TH(lock-app): - - [1667199968.914195][13711:13711] CHIP:EM: Handling via exchange: 8397r, Delegate: 0xaaaae6ead988 - [1667199968.914314][13711:13711] CHIP:IM: Received Read request - [1667199968.914560][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667199968.914630][13711:13711] CHIP:DMG: { - [1667199968.914710][13711:13711] CHIP:DMG: AttributePathIBs = - [1667199968.914778][13711:13711] CHIP:DMG: [ - [1667199968.914868][13711:13711] CHIP:DMG: AttributePathIB = - [1667199968.914937][13711:13711] CHIP:DMG: { - [1667199968.915008][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667199968.915087][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667199968.915191][13711:13711] CHIP:DMG: Attribute = 0x0000_0000, - [1667199968.915268][13711:13711] CHIP:DMG: } - [1667199968.915369][13711:13711] CHIP:DMG: - [1667199968.915444][13711:13711] CHIP:DMG: ], - [1667199968.915538][13711:13711] CHIP:DMG: - [1667199968.915611][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667199968.915675][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667199968.915759][13711:13711] CHIP:DMG: }, - [1667199968.915947][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667199968.916198][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667199968.916272][13711:13711] CHIP:DMG: Cluster 101, Attribute 0 is dirty - [1667199968.916329][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1667199968.916421][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667199968.916501][13711:13711] CHIP:DMG: AccessControl: allowed - [1667199968.916616][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667199968.917258][13711:13711] CHIP:EM: <<< [E:8397r M:42624648 (Ack:1100973)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667199968.917360][13711:13711] CHIP:IN: (S) Sending msg 42624648 on secure session with LSID: 52129 - [1667199968.918056][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:34099 | 42624648 | [Interaction Model (1) / Report Data (0x05) / Session = 53361 / Exchange = 8397] - [1667199968.918153][13711:13711] CHIP:DMG: Header Flags = - [1667199968.918216][13711:13711] CHIP:DMG: { - [1667199968.918296][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667199968.918352][13711:13711] CHIP:DMG: { - [1667199968.918412][13711:13711] CHIP:DMG: AckMsg = 1100973 - [1667199968.918510][13711:13711] CHIP:DMG: NeedsAck = true - [1667199968.918567][13711:13711] CHIP:DMG: } - [1667199968.918641][13711:13711] CHIP:DMG: } - [1667199968.918690][13711:13711] CHIP:DMG: - [1667199968.918784][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667199968.918841][13711:13711] CHIP:DMG: { - [1667199968.918896][13711:13711] CHIP:DMG: data = 0071d00088668a0213ec59910e212002eb28ecde158f7c69d9e0925010329ccde1e1ca12f476b85e5f34c63b584467c91123bbd0d7eb954519e706e5426acff6875e0c8aed8a1c - [1667199968.918977][13711:13711] CHIP:DMG: buffer_ptr = 187651380625184 - [1667199968.919031][13711:13711] CHIP:DMG: } - [1667199968.919080][13711:13711] CHIP:DMG: - [1667199968.919178][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667199968.919236][13711:13711] CHIP:DMG: { - [1667199968.919291][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124040018240201181818290424ff0118 - [1667199968.919370][13711:13711] CHIP:DMG: } - [1667199968.919422][13711:13711] CHIP:DMG: - [1667199968.919594][13711:13711] CHIP:DMG: ReportDataMessage = - [1667199968.919660][13711:13711] CHIP:DMG: { - [1667199968.919719][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667199968.919828][13711:13711] CHIP:DMG: [ - [1667199968.919893][13711:13711] CHIP:DMG: AttributeReportIB = - [1667199968.919969][13711:13711] CHIP:DMG: { - [1667199968.920056][13711:13711] CHIP:DMG: AttributeDataIB = - [1667199968.920143][13711:13711] CHIP:DMG: { - [1667199968.920259][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667199968.920332][13711:13711] CHIP:DMG: AttributePathIB = - [1667199968.920411][13711:13711] CHIP:DMG: { - [1667199968.920516][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667199968.920604][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667199968.920687][13711:13711] CHIP:DMG: Attribute = 0x0000_0000, - [1667199968.920793][13711:13711] CHIP:DMG: } - [1667199968.920877][13711:13711] CHIP:DMG: - [1667199968.920973][13711:13711] CHIP:DMG: Data = 1, - [1667199968.921049][13711:13711] CHIP:DMG: }, - [1667199968.921151][13711:13711] CHIP:DMG: - [1667199968.921219][13711:13711] CHIP:DMG: }, - [1667199968.921295][13711:13711] CHIP:DMG: - [1667199968.921379][13711:13711] CHIP:DMG: ], - disabled: true - - - label: "DUT reads LockType from the TH." - PICS: DRLK.C.A0001 - verification: | - ./chip-tool doorlock read lock-type 1 1 - - Verify the " LockType response" on TH(lock-app): - - [1667200019.424887][13711:13711] CHIP:EM: Handling via exchange: 48509r, Delegate: 0xaaaae6ead988 - [1667200019.424986][13711:13711] CHIP:IM: Received Read request - [1667200019.425159][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200019.425226][13711:13711] CHIP:DMG: { - [1667200019.425280][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200019.425355][13711:13711] CHIP:DMG: [ - [1667200019.425413][13711:13711] CHIP:DMG: AttributePathIB = - [1667200019.425490][13711:13711] CHIP:DMG: { - [1667200019.425568][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200019.425645][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200019.425738][13711:13711] CHIP:DMG: Attribute = 0x0000_0001, - [1667200019.425823][13711:13711] CHIP:DMG: } - [1667200019.425901][13711:13711] CHIP:DMG: - [1667200019.425966][13711:13711] CHIP:DMG: ], - [1667200019.426038][13711:13711] CHIP:DMG: - [1667200019.426120][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200019.426185][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200019.426244][13711:13711] CHIP:DMG: }, - [1667200019.426403][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200019.426677][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200019.426753][13711:13711] CHIP:DMG: Cluster 101, Attribute 1 is dirty - [1667200019.426808][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) - [1667200019.426876][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200019.426946][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200019.427057][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200019.427597][13711:13711] CHIP:EM: <<< [E:48509r M:203636446 (Ack:56644813)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200019.427698][13711:13711] CHIP:IN: (S) Sending msg 203636446 on secure session with LSID: 52130 - [1667200019.428373][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:47028 | 203636446 | [Interaction Model (1) / Report Data (0x05) / Session = 59366 / Exchange = 48509] - [1667200019.428468][13711:13711] CHIP:DMG: Header Flags = - [1667200019.428525][13711:13711] CHIP:DMG: { - [1667200019.428610][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200019.428666][13711:13711] CHIP:DMG: { - [1667200019.428726][13711:13711] CHIP:DMG: AckMsg = 56644813 - [1667200019.428783][13711:13711] CHIP:DMG: NeedsAck = true - [1667200019.428839][13711:13711] CHIP:DMG: } - [1667200019.428908][13711:13711] CHIP:DMG: } - [1667200019.428958][13711:13711] CHIP:DMG: - [1667200019.429022][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200019.429077][13711:13711] CHIP:DMG: { - [1667200019.429132][13711:13711] CHIP:DMG: data = 00e6e700de3e230cfbba604450876d910536eb56d5b537b530ae8735a6b139cb5b209579fe61b3a695692553f63454975b8a33fe9974fa2b880c3e29791e33db457b801a33b2e7 - [1667200019.429191][13711:13711] CHIP:DMG: buffer_ptr = 187651380622384 - [1667200019.429245][13711:13711] CHIP:DMG: } - [1667200019.429297][13711:13711] CHIP:DMG: - [1667200019.429371][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200019.429427][13711:13711] CHIP:DMG: { - [1667200019.429481][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124040118240200181818290424ff0118 - [1667200019.429541][13711:13711] CHIP:DMG: } - [1667200019.429594][13711:13711] CHIP:DMG: - [1667200019.429734][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200019.429799][13711:13711] CHIP:DMG: { - [1667200019.429853][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200019.429932][13711:13711] CHIP:DMG: [ - [1667200019.429995][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200019.430083][13711:13711] CHIP:DMG: { - [1667200019.430157][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200019.430237][13711:13711] CHIP:DMG: { - [1667200019.430330][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200019.430420][13711:13711] CHIP:DMG: AttributePathIB = - [1667200019.430530][13711:13711] CHIP:DMG: { - [1667200019.430621][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200019.430722][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200019.430822][13711:13711] CHIP:DMG: Attribute = 0x0000_0001, - [1667200019.430914][13711:13711] CHIP:DMG: } - [1667200019.430988][13711:13711] CHIP:DMG: - [1667200019.431063][13711:13711] CHIP:DMG: Data = 0, - [1667200019.431150][13711:13711] CHIP:DMG: }, - [1667200019.431236][13711:13711] CHIP:DMG: - [1667200019.431301][13711:13711] CHIP:DMG: }, - [1667200019.431383][13711:13711] CHIP:DMG: - [1667200019.431445][13711:13711] CHIP:DMG: ], - disabled: true - - - label: "DUT reads ActuatorEnabled from the TH." - PICS: DRLK.C.A0002 - verification: | - ./chip-tool doorlock read actuator-enabled 1 1 - - Verify the " ActuatorEnabled response" on TH(lock-app): - - [1667200055.687041][13711:13711] CHIP:EM: Handling via exchange: 62087r, Delegate: 0xaaaae6ead988 - [1667200055.687138][13711:13711] CHIP:IM: Received Read request - [1667200055.687312][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200055.687378][13711:13711] CHIP:DMG: { - [1667200055.687429][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200055.687495][13711:13711] CHIP:DMG: [ - [1667200055.687556][13711:13711] CHIP:DMG: AttributePathIB = - [1667200055.687635][13711:13711] CHIP:DMG: { - [1667200055.687700][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200055.687784][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200055.687868][13711:13711] CHIP:DMG: Attribute = 0x0000_0002, - [1667200055.687952][13711:13711] CHIP:DMG: } - [1667200055.688026][13711:13711] CHIP:DMG: - [1667200055.688099][13711:13711] CHIP:DMG: ], - [1667200055.688172][13711:13711] CHIP:DMG: - [1667200055.688238][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200055.688309][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200055.688370][13711:13711] CHIP:DMG: }, - [1667200055.688530][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200055.688763][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200055.688838][13711:13711] CHIP:DMG: Cluster 101, Attribute 2 is dirty - [1667200055.688893][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) - [1667200055.688961][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200055.689032][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200055.689144][13711:13711] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667200055.689689][13711:13711] CHIP:EM: <<< [E:62087r M:117233210 (Ack:1005910)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200055.689790][13711:13711] CHIP:IN: (S) Sending msg 117233210 on secure session with LSID: 52131 - [1667200055.690515][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:42217 | 117233210 | [Interaction Model (1) / Report Data (0x05) / Session = 60057 / Exchange = 62087] - [1667200055.690611][13711:13711] CHIP:DMG: Header Flags = - [1667200055.690668][13711:13711] CHIP:DMG: { - [1667200055.690754][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200055.690811][13711:13711] CHIP:DMG: { - [1667200055.690871][13711:13711] CHIP:DMG: AckMsg = 1005910 - [1667200055.690927][13711:13711] CHIP:DMG: NeedsAck = true - [1667200055.690980][13711:13711] CHIP:DMG: } - [1667200055.691048][13711:13711] CHIP:DMG: } - [1667200055.691101][13711:13711] CHIP:DMG: - [1667200055.691170][13711:13711] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667200055.691220][13711:13711] CHIP:DMG: { - [1667200055.691274][13711:13711] CHIP:DMG: data = 0099ea003ad6fc060dc885027db0961d2d0aa90811b356ebdd9b47146764b07432882c45951c4a23da29103b3f36c2b646f7ebc0962dd2b555e535f57e8704c2e44af4f51dd2 - [1667200055.691332][13711:13711] CHIP:DMG: buffer_ptr = 187651380626272 - [1667200055.691386][13711:13711] CHIP:DMG: } - [1667200055.691438][13711:13711] CHIP:DMG: - [1667200055.691512][13711:13711] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667200055.691569][13711:13711] CHIP:DMG: { - [1667200055.691620][13711:13711] CHIP:DMG: data = 153601153501260000d72c04370124020125030101240402182902181818290424ff0118 - [1667200055.691675][13711:13711] CHIP:DMG: } - [1667200055.691727][13711:13711] CHIP:DMG: - [1667200055.691875][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200055.691944][13711:13711] CHIP:DMG: { - [1667200055.691999][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200055.692074][13711:13711] CHIP:DMG: [ - [1667200055.692136][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200055.692216][13711:13711] CHIP:DMG: { - [1667200055.692289][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200055.692364][13711:13711] CHIP:DMG: { - [1667200055.692437][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200055.692528][13711:13711] CHIP:DMG: AttributePathIB = - [1667200055.692621][13711:13711] CHIP:DMG: { - [1667200055.692721][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200055.692798][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200055.692895][13711:13711] CHIP:DMG: Attribute = 0x0000_0002, - [1667200055.692989][13711:13711] CHIP:DMG: } - [1667200055.693090][13711:13711] CHIP:DMG: - [1667200055.693188][13711:13711] CHIP:DMG: Data = true, - [1667200055.693258][13711:13711] CHIP:DMG: }, - [1667200055.693353][13711:13711] CHIP:DMG: - [1667200055.693426][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads DoorState from the TH." - PICS: DRLK.C.F05 && DRLK.C.A0003 - verification: | - ./chip-tool doorlock read door-state 1 1 - - Verify the " DoorState response" on TH(lock-app): - - - [1667200114.281995][13711:13711] CHIP:EM: Handling via exchange: 64687r, Delegate: 0xaaaae6ead988 - [1667200114.282094][13711:13711] CHIP:IM: Received Read request - [1667200114.282270][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200114.282340][13711:13711] CHIP:DMG: { - [1667200114.282396][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200114.282507][13711:13711] CHIP:DMG: [ - [1667200114.282576][13711:13711] CHIP:DMG: AttributePathIB = - [1667200114.282655][13711:13711] CHIP:DMG: { - [1667200114.282733][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200114.282808][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200114.282888][13711:13711] CHIP:DMG: Attribute = 0x0000_0003, - [1667200114.282973][13711:13711] CHIP:DMG: } - [1667200114.283046][13711:13711] CHIP:DMG: - [1667200114.283118][13711:13711] CHIP:DMG: ], - [1667200114.283191][13711:13711] CHIP:DMG: - [1667200114.283259][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200114.283323][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200114.283377][13711:13711] CHIP:DMG: }, - [1667200114.283531][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200114.283777][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200114.283853][13711:13711] CHIP:DMG: Cluster 101, Attribute 3 is dirty - [1667200114.283909][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) - [1667200114.283977][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200114.284053][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200114.284169][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200114.284764][13711:13711] CHIP:EM: <<< [E:64687r M:190973833 (Ack:240970851)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200114.284873][13711:13711] CHIP:IN: (S) Sending msg 190973833 on secure session with LSID: 52132 - [1667200114.285601][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:38894 | 190973833 | [Interaction Model (1) / Report Data (0x05) / Session = 11455 / Exchange = 64687] - [1667200114.285703][13711:13711] CHIP:DMG: Header Flags = - [1667200114.285762][13711:13711] CHIP:DMG: { - [1667200114.285849][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200114.285906][13711:13711] CHIP:DMG: { - [1667200114.285967][13711:13711] CHIP:DMG: AckMsg = 240970851 - [1667200114.286024][13711:13711] CHIP:DMG: NeedsAck = true - [1667200114.286071][13711:13711] CHIP:DMG: } - [1667200114.286136][13711:13711] CHIP:DMG: } - [1667200114.286194][13711:13711] CHIP:DMG: - [1667200114.286266][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200114.286322][13711:13711] CHIP:DMG: { - [1667200114.286382][13711:13711] CHIP:DMG: data = 00bf2c008907620b69679edd6413ba91c5fd31a35c4593a991d39cad807e9fe6325be44532f53e9c324fadc72fafdedb973a45986e9da8adc6a4cfe476d6e128c74be896f0491a - [1667200114.286441][13711:13711] CHIP:DMG: buffer_ptr = 187651380625424 - [1667200114.286573][13711:13711] CHIP:DMG: } - [1667200114.286632][13711:13711] CHIP:DMG: - [1667200114.286716][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200114.286774][13711:13711] CHIP:DMG: { - [1667200114.286829][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124040318240201181818290424ff0118 - [1667200114.286885][13711:13711] CHIP:DMG: } - [1667200114.286937][13711:13711] CHIP:DMG: - [1667200114.287092][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200114.287157][13711:13711] CHIP:DMG: { - [1667200114.287210][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200114.287286][13711:13711] CHIP:DMG: [ - [1667200114.287349][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200114.287439][13711:13711] CHIP:DMG: { - [1667200114.287506][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200114.287598][13711:13711] CHIP:DMG: { - [1667200114.287682][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200114.287775][13711:13711] CHIP:DMG: AttributePathIB = - [1667200114.287870][13711:13711] CHIP:DMG: { - [1667200114.287944][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200114.288034][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200114.288135][13711:13711] CHIP:DMG: Attribute = 0x0000_0003, - [1667200114.288232][13711:13711] CHIP:DMG: } - [1667200114.288332][13711:13711] CHIP:DMG: - [1667200114.288420][13711:13711] CHIP:DMG: Data = 1, - [1667200114.288494][13711:13711] CHIP:DMG: }, - [1667200114.288581][13711:13711] CHIP:DMG: - [1667200114.288653][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads DoorOpenEvents from the TH." - PICS: DRLK.C.F05 && DRLK.C.A0004 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read door-open-events 1 1 - - Verify the " DoorOpenEvents response" on TH(lock-app): - - [1667200185.593393][13711:13711] CHIP:EM: Handling via exchange: 47464r, Delegate: 0xaaaae6ead988 - [1667200185.593489][13711:13711] CHIP:IM: Received Read request - [1667200185.593673][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200185.593742][13711:13711] CHIP:DMG: { - [1667200185.593801][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200185.593869][13711:13711] CHIP:DMG: [ - [1667200185.593933][13711:13711] CHIP:DMG: AttributePathIB = - [1667200185.594012][13711:13711] CHIP:DMG: { - [1667200185.594095][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200185.594190][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200185.594267][13711:13711] CHIP:DMG: Attribute = 0x0000_0004, - [1667200185.594355][13711:13711] CHIP:DMG: } - [1667200185.594436][13711:13711] CHIP:DMG: - [1667200185.594553][13711:13711] CHIP:DMG: ], - [1667200185.594631][13711:13711] CHIP:DMG: - [1667200185.594707][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200185.594774][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200185.594836][13711:13711] CHIP:DMG: }, - [1667200185.595001][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200185.595264][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200185.595347][13711:13711] CHIP:DMG: Cluster 101, Attribute 4 is dirty - [1667200185.595405][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0004 (expanded=0) - [1667200185.595517][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667200185.596126][13711:13711] CHIP:EM: <<< [E:47464r M:165731760 (Ack:257392423)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200185.596240][13711:13711] CHIP:IN: (S) Sending msg 165731760 on secure session with LSID: 52133 - [1667200185.596970][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:43825 | 165731760 | [Interaction Model (1) / Report Data (0x05) / Session = 19519 / Exchange = 47464] - [1667200185.597075][13711:13711] CHIP:DMG: Header Flags = - [1667200185.597133][13711:13711] CHIP:DMG: { - [1667200185.597221][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200185.597278][13711:13711] CHIP:DMG: { - [1667200185.597338][13711:13711] CHIP:DMG: AckMsg = 257392423 - [1667200185.597392][13711:13711] CHIP:DMG: NeedsAck = true - [1667200185.597447][13711:13711] CHIP:DMG: } - [1667200185.597514][13711:13711] CHIP:DMG: } - [1667200185.597571][13711:13711] CHIP:DMG: - [1667200185.597642][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667200185.597698][13711:13711] CHIP:DMG: { - [1667200185.597753][13711:13711] CHIP:DMG: data = 003f4c00b0dde0092b74aa190edd1dbd50b1bc1dc61d19ceb5a6f31c60da38062da07005af18d2c494204c4132d7a2541feb000aeeb16be1135c72135b9844e4d02960fd - [1667200185.597817][13711:13711] CHIP:DMG: buffer_ptr = 187651380622544 - [1667200185.597871][13711:13711] CHIP:DMG: } - [1667200185.597921][13711:13711] CHIP:DMG: - [1667200185.597996][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667200185.598046][13711:13711] CHIP:DMG: { - [1667200185.598100][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124040418350124008618181818290424ff0118 - [1667200185.598156][13711:13711] CHIP:DMG: } - [1667200185.598208][13711:13711] CHIP:DMG: - [1667200185.598352][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200185.598413][13711:13711] CHIP:DMG: { - [1667200185.598572][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200185.598666][13711:13711] CHIP:DMG: [ - [1667200185.598729][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200185.598817][13711:13711] CHIP:DMG: { - [1667200185.598890][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667200185.598982][13711:13711] CHIP:DMG: { - [1667200185.599070][13711:13711] CHIP:DMG: AttributePathIB = - [1667200185.599166][13711:13711] CHIP:DMG: { - [1667200185.599258][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200185.599361][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200185.599460][13711:13711] CHIP:DMG: Attribute = 0x0000_0004, - [1667200185.599545][13711:13711] CHIP:DMG: } - [1667200185.599637][13711:13711] CHIP:DMG: - [1667200185.599714][13711:13711] CHIP:DMG: StatusIB = - [1667200185.599809][13711:13711] CHIP:DMG: { - [1667200185.599905][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667200185.600000][13711:13711] CHIP:DMG: }, - [1667200185.600073][13711:13711] CHIP:DMG: - [1667200185.600161][13711:13711] CHIP:DMG: }, - [1667200185.600257][13711:13711] CHIP:DMG: - [1667200185.600329][13711:13711] CHIP:DMG: }, - [1667200185.600504][13711:13711] CHIP:DMG: - [1667200185.600574][13711:13711] CHIP:DMG: ], - disabled: true - - - label: "DUT reads DoorClosedEvents from the TH." - PICS: DRLK.C.F05 && DRLK.C.A0005 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read door-closed-events 1 1 - - Verify the " DoorClosedEvents response" on TH(lock-app): - - - [1667200235.619059][13711:13711] CHIP:EM: Handling via exchange: 46103r, Delegate: 0xaaaae6ead988 - [1667200235.619156][13711:13711] CHIP:IM: Received Read request - [1667200235.619330][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200235.619396][13711:13711] CHIP:DMG: { - [1667200235.619444][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200235.619590][13711:13711] CHIP:DMG: [ - [1667200235.619661][13711:13711] CHIP:DMG: AttributePathIB = - [1667200235.619793][13711:13711] CHIP:DMG: { - [1667200235.619874][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200235.619967][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200235.620043][13711:13711] CHIP:DMG: Attribute = 0x0000_0005, - [1667200235.620111][13711:13711] CHIP:DMG: } - [1667200235.620183][13711:13711] CHIP:DMG: - [1667200235.620242][13711:13711] CHIP:DMG: ], - [1667200235.620313][13711:13711] CHIP:DMG: - [1667200235.620379][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200235.620444][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200235.620504][13711:13711] CHIP:DMG: }, - [1667200235.620670][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200235.620898][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200235.620971][13711:13711] CHIP:DMG: Cluster 101, Attribute 5 is dirty - [1667200235.621026][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0005 (expanded=0) - [1667200235.621134][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667200235.621675][13711:13711] CHIP:EM: <<< [E:46103r M:36726559 (Ack:161610801)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200235.621775][13711:13711] CHIP:IN: (S) Sending msg 36726559 on secure session with LSID: 52134 - [1667200235.622779][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:51975 | 36726559 | [Interaction Model (1) / Report Data (0x05) / Session = 1917 / Exchange = 46103] - [1667200235.622881][13711:13711] CHIP:DMG: Header Flags = - [1667200235.622939][13711:13711] CHIP:DMG: { - [1667200235.623025][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200235.623081][13711:13711] CHIP:DMG: { - [1667200235.623141][13711:13711] CHIP:DMG: AckMsg = 161610801 - [1667200235.623197][13711:13711] CHIP:DMG: NeedsAck = true - [1667200235.623252][13711:13711] CHIP:DMG: } - [1667200235.623393][13711:13711] CHIP:DMG: } - [1667200235.623450][13711:13711] CHIP:DMG: - [1667200235.623514][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667200235.623569][13711:13711] CHIP:DMG: { - [1667200235.623624][13711:13711] CHIP:DMG: data = 007d07001f673002475bd83b42988052a6a23f9f0d8880b2289a077e9e8f7c1eba292766677355f74e9d84afde6eb128a39739d4a1516166b7b3854f8c5267cdffc16f93 - [1667200235.623684][13711:13711] CHIP:DMG: buffer_ptr = 187651380628416 - [1667200235.623734][13711:13711] CHIP:DMG: } - [1667200235.623786][13711:13711] CHIP:DMG: - [1667200235.623858][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667200235.623914][13711:13711] CHIP:DMG: { - [1667200235.623962][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124040518350124008618181818290424ff0118 - [1667200235.624017][13711:13711] CHIP:DMG: } - [1667200235.624069][13711:13711] CHIP:DMG: - [1667200235.624202][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200235.624266][13711:13711] CHIP:DMG: { - [1667200235.624320][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200235.624406][13711:13711] CHIP:DMG: [ - [1667200235.624468][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200235.624555][13711:13711] CHIP:DMG: { - [1667200235.624629][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667200235.624704][13711:13711] CHIP:DMG: { - [1667200235.624934][13711:13711] CHIP:DMG: AttributePathIB = - [1667200235.625025][13711:13711] CHIP:DMG: { - [1667200235.625124][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200235.625206][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200235.625373][13711:13711] CHIP:DMG: Attribute = 0x0000_0005, - [1667200235.625465][13711:13711] CHIP:DMG: } - [1667200235.625574][13711:13711] CHIP:DMG: - [1667200235.625667][13711:13711] CHIP:DMG: StatusIB = - [1667200235.625762][13711:13711] CHIP:DMG: { - [1667200235.625861][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667200235.625934][13711:13711] CHIP:DMG: }, - [1667200235.626031][13711:13711] CHIP:DMG: - [1667200235.626116][13711:13711] CHIP:DMG: }, - [1667200235.626212][13711:13711] CHIP:DMG: - [1667200235.626293][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads OpenPeriod from the TH." - PICS: DRLK.C.F05 && DRLK.C.A0006 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read open-period 1 1 - - Verify the " OpenPeriod response" on TH(lock-app): - - [1667200262.031917][13711:13711] CHIP:EM: Handling via exchange: 63244r, Delegate: 0xaaaae6ead988 - [1667200262.032021][13711:13711] CHIP:IM: Received Read request - [1667200262.032244][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200262.032316][13711:13711] CHIP:DMG: { - [1667200262.032370][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200262.032436][13711:13711] CHIP:DMG: [ - [1667200262.032503][13711:13711] CHIP:DMG: AttributePathIB = - [1667200262.032581][13711:13711] CHIP:DMG: { - [1667200262.032659][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200262.032752][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200262.032843][13711:13711] CHIP:DMG: Attribute = 0x0000_0006, - [1667200262.032927][13711:13711] CHIP:DMG: } - [1667200262.033000][13711:13711] CHIP:DMG: - [1667200262.033072][13711:13711] CHIP:DMG: ], - [1667200262.033145][13711:13711] CHIP:DMG: - [1667200262.033211][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200262.033275][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200262.033329][13711:13711] CHIP:DMG: }, - [1667200262.033487][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200262.033739][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200262.033816][13711:13711] CHIP:DMG: Cluster 101, Attribute 6 is dirty - [1667200262.033871][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0006 (expanded=0) - [1667200262.034019][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667200262.034795][13711:13711] CHIP:EM: <<< [E:63244r M:13287485 (Ack:152713233)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200262.034910][13711:13711] CHIP:IN: (S) Sending msg 13287485 on secure session with LSID: 52135 - [1667200262.035657][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:44449 | 13287485 | [Interaction Model (1) / Report Data (0x05) / Session = 52822 / Exchange = 63244] - [1667200262.035764][13711:13711] CHIP:DMG: Header Flags = - [1667200262.035823][13711:13711] CHIP:DMG: { - [1667200262.035911][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200262.035969][13711:13711] CHIP:DMG: { - [1667200262.036029][13711:13711] CHIP:DMG: AckMsg = 152713233 - [1667200262.036081][13711:13711] CHIP:DMG: NeedsAck = true - [1667200262.036135][13711:13711] CHIP:DMG: } - [1667200262.036202][13711:13711] CHIP:DMG: } - [1667200262.036257][13711:13711] CHIP:DMG: - [1667200262.036332][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667200262.036388][13711:13711] CHIP:DMG: { - [1667200262.036442][13711:13711] CHIP:DMG: data = 0056ce003dc0ca00561382dfdf74a1040f16ed08da5a00afa3b3870b7fdd7c12b05223abaa325f8d2d05e74ee1db6541941eab3918ebc7d708c0a9593dbb1232769d46ca - [1667200262.036501][13711:13711] CHIP:DMG: buffer_ptr = 187651380629680 - [1667200262.036558][13711:13711] CHIP:DMG: } - [1667200262.036612][13711:13711] CHIP:DMG: - [1667200262.036691][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667200262.036748][13711:13711] CHIP:DMG: { - [1667200262.036802][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124040618350124008618181818290424ff0118 - [1667200262.036857][13711:13711] CHIP:DMG: } - [1667200262.036909][13711:13711] CHIP:DMG: - [1667200262.037051][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200262.037117][13711:13711] CHIP:DMG: { - [1667200262.037199][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200262.037289][13711:13711] CHIP:DMG: [ - [1667200262.037351][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200262.037449][13711:13711] CHIP:DMG: { - [1667200262.037520][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667200262.037601][13711:13711] CHIP:DMG: { - [1667200262.037688][13711:13711] CHIP:DMG: AttributePathIB = - [1667200262.037782][13711:13711] CHIP:DMG: { - [1667200262.037859][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200262.037959][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200262.038060][13711:13711] CHIP:DMG: Attribute = 0x0000_0006, - [1667200262.038155][13711:13711] CHIP:DMG: } - [1667200262.038260][13711:13711] CHIP:DMG: - [1667200262.038352][13711:13711] CHIP:DMG: StatusIB = - [1667200262.038448][13711:13711] CHIP:DMG: { - [1667200262.038577][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667200262.038655][13711:13711] CHIP:DMG: }, - [1667200262.038753][13711:13711] CHIP:DMG: - [1667200262.038828][13711:13711] CHIP:DMG: }, - [1667200262.038915][13711:13711] CHIP:DMG: - [1667200262.038980][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberOfTotalUsersSupportedfrom the TH." - PICS: DRLK.C.F05 && DRLK.C.A0011 - verification: | - ./chip-tool doorlock read number-of-total-users-supported 1 1 - - - Verify the " NumberofTotalUsers response" on TH(lock-app): - - [1667200330.626786][13711:13711] CHIP:EM: Handling via exchange: 42426r, Delegate: 0xaaaae6ead988 - [1667200330.626908][13711:13711] CHIP:IM: Received Read request - [1667200330.627094][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200330.627188][13711:13711] CHIP:DMG: { - [1667200330.627247][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200330.627315][13711:13711] CHIP:DMG: [ - [1667200330.627378][13711:13711] CHIP:DMG: AttributePathIB = - [1667200330.627481][13711:13711] CHIP:DMG: { - [1667200330.627563][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200330.627657][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200330.627749][13711:13711] CHIP:DMG: Attribute = 0x0000_0011, - [1667200330.627858][13711:13711] CHIP:DMG: } - [1667200330.627937][13711:13711] CHIP:DMG: - [1667200330.628007][13711:13711] CHIP:DMG: ], - [1667200330.628081][13711:13711] CHIP:DMG: - [1667200330.628151][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200330.628218][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200330.628280][13711:13711] CHIP:DMG: }, - [1667200330.628477][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200330.628737][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200330.628847][13711:13711] CHIP:DMG: Cluster 101, Attribute 11 is dirty - [1667200330.628901][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0011 (expanded=0) - [1667200330.628970][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200330.629046][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200330.629168][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200330.629807][13711:13711] CHIP:EM: <<< [E:42426r M:62601871 (Ack:145201459)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200330.629914][13711:13711] CHIP:IN: (S) Sending msg 62601871 on secure session with LSID: 52136 - [1667200330.630763][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:53603 | 62601871 | [Interaction Model (1) / Report Data (0x05) / Session = 36912 / Exchange = 42426] - [1667200330.630866][13711:13711] CHIP:DMG: Header Flags = - [1667200330.630924][13711:13711] CHIP:DMG: { - [1667200330.631012][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200330.631074][13711:13711] CHIP:DMG: { - [1667200330.631134][13711:13711] CHIP:DMG: AckMsg = 145201459 - [1667200330.631198][13711:13711] CHIP:DMG: NeedsAck = true - [1667200330.631253][13711:13711] CHIP:DMG: } - [1667200330.631320][13711:13711] CHIP:DMG: } - [1667200330.631375][13711:13711] CHIP:DMG: - [1667200330.631451][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200330.631508][13711:13711] CHIP:DMG: { - [1667200330.631564][13711:13711] CHIP:DMG: data = 003090008f3abb03cdb26b1b39b1564ce53ebcafdc0e7cae58b1e84e78a789af64db345beb797453c11cca880a9a46db1a14d865865a7b6aa26b150f8f895be4df92e3c95e7410 - [1667200330.631623][13711:13711] CHIP:DMG: buffer_ptr = 187651380630080 - [1667200330.631677][13711:13711] CHIP:DMG: } - [1667200330.631729][13711:13711] CHIP:DMG: - [1667200330.631802][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200330.631859][13711:13711] CHIP:DMG: { - [1667200330.631913][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404111824020a181818290424ff0118 - [1667200330.631969][13711:13711] CHIP:DMG: } - [1667200330.632021][13711:13711] CHIP:DMG: - [1667200330.632174][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200330.632234][13711:13711] CHIP:DMG: { - [1667200330.632288][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200330.632366][13711:13711] CHIP:DMG: [ - [1667200330.632427][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200330.632516][13711:13711] CHIP:DMG: { - [1667200330.632590][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200330.632670][13711:13711] CHIP:DMG: { - [1667200330.632791][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200330.632887][13711:13711] CHIP:DMG: AttributePathIB = - [1667200330.632981][13711:13711] CHIP:DMG: { - [1667200330.633062][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200330.633162][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200330.633262][13711:13711] CHIP:DMG: Attribute = 0x0000_0011, - [1667200330.633358][13711:13711] CHIP:DMG: } - [1667200330.633446][13711:13711] CHIP:DMG: - [1667200330.633528][13711:13711] CHIP:DMG: Data = 10, - [1667200330.633619][13711:13711] CHIP:DMG: }, - [1667200330.633706][13711:13711] CHIP:DMG: - [1667200330.633768][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberofPINUsers Supported from the TH." - PICS: DRLK.C.F00 && DRLK.C.A0012 - verification: | - ./chip-tool doorlock read number-of-pinusers-supported 1 1 - - Verify the " NumberofPINUsers Supported response" on TH(lock-app): - - [1667200386.300136][13711:13711] CHIP:EM: Handling via exchange: 28136r, Delegate: 0xaaaae6ead988 - [1667200386.300236][13711:13711] CHIP:IM: Received Read request - [1667200386.300439][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200386.300508][13711:13711] CHIP:DMG: { - [1667200386.300567][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200386.300639][13711:13711] CHIP:DMG: [ - [1667200386.300701][13711:13711] CHIP:DMG: AttributePathIB = - [1667200386.300778][13711:13711] CHIP:DMG: { - [1667200386.300848][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200386.300939][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200386.301030][13711:13711] CHIP:DMG: Attribute = 0x0000_0012, - [1667200386.301103][13711:13711] CHIP:DMG: } - [1667200386.301176][13711:13711] CHIP:DMG: - [1667200386.301248][13711:13711] CHIP:DMG: ], - [1667200386.301322][13711:13711] CHIP:DMG: - [1667200386.301389][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200386.301453][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200386.301513][13711:13711] CHIP:DMG: }, - [1667200386.301673][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200386.301911][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200386.301987][13711:13711] CHIP:DMG: Cluster 101, Attribute 12 is dirty - [1667200386.302042][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0012 (expanded=0) - [1667200386.302110][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200386.302187][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200386.302342][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200386.303002][13711:13711] CHIP:EM: <<< [E:28136r M:7024561 (Ack:142536196)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200386.303123][13711:13711] CHIP:IN: (S) Sending msg 7024561 on secure session with LSID: 52137 - [1667200386.303924][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:42664 | 7024561 | [Interaction Model (1) / Report Data (0x05) / Session = 64862 / Exchange = 28136] - [1667200386.304027][13711:13711] CHIP:DMG: Header Flags = - [1667200386.304085][13711:13711] CHIP:DMG: { - [1667200386.304171][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200386.304228][13711:13711] CHIP:DMG: { - [1667200386.304289][13711:13711] CHIP:DMG: AckMsg = 142536196 - [1667200386.304346][13711:13711] CHIP:DMG: NeedsAck = true - [1667200386.304400][13711:13711] CHIP:DMG: } - [1667200386.304479][13711:13711] CHIP:DMG: } - [1667200386.304535][13711:13711] CHIP:DMG: - [1667200386.304603][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200386.304659][13711:13711] CHIP:DMG: { - [1667200386.304713][13711:13711] CHIP:DMG: data = 005efd00b12f6b00fc7d753c0d8dab88828097ca51649bd89e25a7f81deb2313667a36389d83e49ec24195730e31918232a488e813a2b32c7daa8836f812a8e27b768d51b4e750 - [1667200386.304772][13711:13711] CHIP:DMG: buffer_ptr = 187651380631184 - [1667200386.304826][13711:13711] CHIP:DMG: } - [1667200386.304878][13711:13711] CHIP:DMG: - [1667200386.304952][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200386.305008][13711:13711] CHIP:DMG: { - [1667200386.305062][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404121824020a181818290424ff0118 - [1667200386.305118][13711:13711] CHIP:DMG: } - [1667200386.305170][13711:13711] CHIP:DMG: - [1667200386.305321][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200386.305386][13711:13711] CHIP:DMG: { - [1667200386.305440][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200386.305524][13711:13711] CHIP:DMG: [ - [1667200386.305586][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200386.305685][13711:13711] CHIP:DMG: { - [1667200386.305758][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200386.305850][13711:13711] CHIP:DMG: { - [1667200386.305982][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200386.306073][13711:13711] CHIP:DMG: AttributePathIB = - [1667200386.306151][13711:13711] CHIP:DMG: { - [1667200386.306249][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200386.306351][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200386.306453][13711:13711] CHIP:DMG: Attribute = 0x0000_0012, - [1667200386.306557][13711:13711] CHIP:DMG: } - [1667200386.306659][13711:13711] CHIP:DMG: - [1667200386.306756][13711:13711] CHIP:DMG: Data = 10, - [1667200386.306846][13711:13711] CHIP:DMG: }, - [1667200386.306967][13711:13711] CHIP:DMG: - [1667200386.307042][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberofRFIDUsersSupported from the TH." - PICS: DRLK.C.F01 && DRLK.C.A0013 - verification: | - ./chip-tool doorlock read number-of-rfidusers-supported 1 1 - - Verify the " NumberofRFIDUsersSupported response" on TH(lock-app): - - [1667200631.809973][13711:13711] CHIP:EM: Handling via exchange: 2721r, Delegate: 0xaaaae6ead988 - [1667200631.810094][13711:13711] CHIP:IM: Received Read request - [1667200631.810297][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200631.810367][13711:13711] CHIP:DMG: { - [1667200631.810447][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200631.810588][13711:13711] CHIP:DMG: [ - [1667200631.810680][13711:13711] CHIP:DMG: AttributePathIB = - [1667200631.810756][13711:13711] CHIP:DMG: { - [1667200631.810830][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200631.810909][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200631.811016][13711:13711] CHIP:DMG: Attribute = 0x0000_0013, - [1667200631.811093][13711:13711] CHIP:DMG: } - [1667200631.811192][13711:13711] CHIP:DMG: - [1667200631.811252][13711:13711] CHIP:DMG: ], - [1667200631.811340][13711:13711] CHIP:DMG: - [1667200631.811410][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200631.811478][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200631.811561][13711:13711] CHIP:DMG: }, - [1667200631.811757][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200631.812013][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200631.812104][13711:13711] CHIP:DMG: Cluster 101, Attribute 13 is dirty - [1667200631.812166][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0013 (expanded=0) - [1667200631.812237][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200631.812317][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200631.812433][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200631.813044][13711:13711] CHIP:EM: <<< [E:2721r M:103880978 (Ack:65179899)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200631.813180][13711:13711] CHIP:IN: (S) Sending msg 103880978 on secure session with LSID: 52138 - [1667200631.813922][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:56257 | 103880978 | [Interaction Model (1) / Report Data (0x05) / Session = 15321 / Exchange = 2721] - [1667200631.814018][13711:13711] CHIP:DMG: Header Flags = - [1667200631.814074][13711:13711] CHIP:DMG: { - [1667200631.814161][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200631.814217][13711:13711] CHIP:DMG: { - [1667200631.814278][13711:13711] CHIP:DMG: AckMsg = 65179899 - [1667200631.814330][13711:13711] CHIP:DMG: NeedsAck = true - [1667200631.814383][13711:13711] CHIP:DMG: } - [1667200631.814489][13711:13711] CHIP:DMG: } - [1667200631.814567][13711:13711] CHIP:DMG: - [1667200631.814639][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200631.814696][13711:13711] CHIP:DMG: { - [1667200631.814750][13711:13711] CHIP:DMG: data = 00d93b0012193106a3883d1636f83f52a36f876a2c5745a1511259ca416a9e94d9744ac8bd979df53278309a3cecbb93497e7ba042aa4df0ab3d37af7d1c2cafd39cd07ce01f08 - [1667200631.814833][13711:13711] CHIP:DMG: buffer_ptr = 187651380631392 - [1667200631.814889][13711:13711] CHIP:DMG: } - [1667200631.814941][13711:13711] CHIP:DMG: - [1667200631.815011][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200631.815068][13711:13711] CHIP:DMG: { - [1667200631.815122][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404131824020a181818290424ff0118 - [1667200631.815183][13711:13711] CHIP:DMG: } - [1667200631.815237][13711:13711] CHIP:DMG: - [1667200631.815406][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200631.815473][13711:13711] CHIP:DMG: { - [1667200631.815550][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200631.815638][13711:13711] CHIP:DMG: [ - [1667200631.815729][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200631.815821][13711:13711] CHIP:DMG: { - [1667200631.815881][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200631.815958][13711:13711] CHIP:DMG: { - [1667200631.816055][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200631.816152][13711:13711] CHIP:DMG: AttributePathIB = - [1667200631.816263][13711:13711] CHIP:DMG: { - [1667200631.816385][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200631.816472][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200631.816557][13711:13711] CHIP:DMG: Attribute = 0x0000_0013, - [1667200631.816666][13711:13711] CHIP:DMG: } - [1667200631.816759][13711:13711] CHIP:DMG: - [1667200631.816872][13711:13711] CHIP:DMG: Data = 10, - [1667200631.816954][13711:13711] CHIP:DMG: }, - [1667200631.817069][13711:13711] CHIP:DMG: - [1667200631.817144][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberofWeekDaysSchedulesSupported from the TH." - PICS: DRLK.C.F04 && DRLK.C.A0014 - verification: | - ./chip-tool doorlock read number-of-week-day-schedules-supported-per-user 1 1 - - Verify the " NumberofWeekDaysSchedulesSupported response" on TH(lock-app): - - [1667200745.578180][13711:13711] CHIP:EM: Handling via exchange: 6472r, Delegate: 0xaaaae6ead988 - [1667200745.578276][13711:13711] CHIP:IM: Received Read request - [1667200745.578536][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200745.578628][13711:13711] CHIP:DMG: { - [1667200745.578686][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200745.578751][13711:13711] CHIP:DMG: [ - [1667200745.578836][13711:13711] CHIP:DMG: AttributePathIB = - [1667200745.578916][13711:13711] CHIP:DMG: { - [1667200745.579013][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200745.579083][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200745.579163][13711:13711] CHIP:DMG: Attribute = 0x0000_0014, - [1667200745.579232][13711:13711] CHIP:DMG: } - [1667200745.579328][13711:13711] CHIP:DMG: - [1667200745.579400][13711:13711] CHIP:DMG: ], - [1667200745.579494][13711:13711] CHIP:DMG: - [1667200745.579562][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200745.579626][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200745.579708][13711:13711] CHIP:DMG: }, - [1667200745.579898][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200745.580149][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200745.580223][13711:13711] CHIP:DMG: Cluster 101, Attribute 14 is dirty - [1667200745.580279][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0014 (expanded=0) - [1667200745.580346][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200745.580445][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200745.580558][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200745.581183][13711:13711] CHIP:EM: <<< [E:6472r M:107605444 (Ack:128669744)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200745.581284][13711:13711] CHIP:IN: (S) Sending msg 107605444 on secure session with LSID: 52139 - [1667200745.581992][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:39658 | 107605444 | [Interaction Model (1) / Report Data (0x05) / Session = 10295 / Exchange = 6472] - [1667200745.582090][13711:13711] CHIP:DMG: Header Flags = - [1667200745.582148][13711:13711] CHIP:DMG: { - [1667200745.582234][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200745.582290][13711:13711] CHIP:DMG: { - [1667200745.582349][13711:13711] CHIP:DMG: AckMsg = 128669744 - [1667200745.582405][13711:13711] CHIP:DMG: NeedsAck = true - [1667200745.582578][13711:13711] CHIP:DMG: } - [1667200745.582654][13711:13711] CHIP:DMG: } - [1667200745.582734][13711:13711] CHIP:DMG: - [1667200745.582805][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200745.582854][13711:13711] CHIP:DMG: { - [1667200745.582933][13711:13711] CHIP:DMG: data = 00372800c4ed69066a128eae70516ec8c93d50ffc85d6d87739d861bb2d308858971b74ffbbd471696287acde56597eabe64a8707beebc98265e392e9d7cf4871e794a2a680b0e - [1667200745.582998][13711:13711] CHIP:DMG: buffer_ptr = 187651380632032 - [1667200745.583052][13711:13711] CHIP:DMG: } - [1667200745.583128][13711:13711] CHIP:DMG: - [1667200745.583204][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200745.583262][13711:13711] CHIP:DMG: { - [1667200745.583336][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404141824020a181818290424ff0118 - [1667200745.583392][13711:13711] CHIP:DMG: } - [1667200745.583445][13711:13711] CHIP:DMG: - [1667200745.583617][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200745.583713][13711:13711] CHIP:DMG: { - [1667200745.583768][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200745.583879][13711:13711] CHIP:DMG: [ - [1667200745.583951][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200745.584041][13711:13711] CHIP:DMG: { - [1667200745.584115][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200745.584227][13711:13711] CHIP:DMG: { - [1667200745.584298][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200745.584395][13711:13711] CHIP:DMG: AttributePathIB = - [1667200745.584489][13711:13711] CHIP:DMG: { - [1667200745.584609][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200745.584689][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200745.584793][13711:13711] CHIP:DMG: Attribute = 0x0000_0014, - [1667200745.584888][13711:13711] CHIP:DMG: } - [1667200745.585011][13711:13711] CHIP:DMG: - [1667200745.585131][13711:13711] CHIP:DMG: Data = 10, - [1667200745.585225][13711:13711] CHIP:DMG: }, - [1667200745.585338][13711:13711] CHIP:DMG: - [1667200745.585410][13711:13711] CHIP:DMG: }, - [1667200745.585512][13711:13711] CHIP:DMG: - [1667200745.585580][13711:13711] CHIP:DMG: ], - disabled: true - - - label: "DUT reads NumberofYearDaysSchedulesSupported from the TH." - PICS: DRLK.C.F04 && DRLK.C.A0015 - verification: | - ./chip-tool doorlock read number-of-year-day-schedules-supported-per-user 1 1 - - Verify the " NumberofYearDaysSchedulesSupported response" on TH(lock-app): - - [1667200809.945576][13711:13711] CHIP:EM: Handling via exchange: 45615r, Delegate: 0xaaaae6ead988 - [1667200809.945673][13711:13711] CHIP:IM: Received Read request - [1667200809.945856][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200809.945928][13711:13711] CHIP:DMG: { - [1667200809.945986][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200809.946054][13711:13711] CHIP:DMG: [ - [1667200809.946118][13711:13711] CHIP:DMG: AttributePathIB = - [1667200809.946225][13711:13711] CHIP:DMG: { - [1667200809.946334][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200809.946432][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200809.946587][13711:13711] CHIP:DMG: Attribute = 0x0000_0015, - [1667200809.946676][13711:13711] CHIP:DMG: } - [1667200809.946760][13711:13711] CHIP:DMG: - [1667200809.946852][13711:13711] CHIP:DMG: ], - [1667200809.946929][13711:13711] CHIP:DMG: - [1667200809.947002][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200809.947058][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200809.947124][13711:13711] CHIP:DMG: }, - [1667200809.947297][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200809.947562][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200809.947668][13711:13711] CHIP:DMG: Cluster 101, Attribute 15 is dirty - [1667200809.947727][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0015 (expanded=0) - [1667200809.947798][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200809.947901][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200809.948026][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200809.948675][13711:13711] CHIP:EM: <<< [E:45615r M:219299818 (Ack:199165538)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200809.948818][13711:13711] CHIP:IN: (S) Sending msg 219299818 on secure session with LSID: 52140 - [1667200809.949621][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:51487 | 219299818 | [Interaction Model (1) / Report Data (0x05) / Session = 59498 / Exchange = 45615] - [1667200809.949742][13711:13711] CHIP:DMG: Header Flags = - [1667200809.949803][13711:13711] CHIP:DMG: { - [1667200809.949893][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200809.949963][13711:13711] CHIP:DMG: { - [1667200809.950029][13711:13711] CHIP:DMG: AckMsg = 199165538 - [1667200809.950091][13711:13711] CHIP:DMG: NeedsAck = true - [1667200809.950149][13711:13711] CHIP:DMG: } - [1667200809.950227][13711:13711] CHIP:DMG: } - [1667200809.950285][13711:13711] CHIP:DMG: - [1667200809.950360][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200809.950421][13711:13711] CHIP:DMG: { - [1667200809.950521][13711:13711] CHIP:DMG: data = 006ae800ea3f120d190dff394a04d915d4a5d2cace779ea93be36122b1d430cbaf16a6d1b3f25c9c5da2c3c7a60124290426b3ff1949ec1b38d5c6a12484e417af547c699790c2 - [1667200809.950587][13711:13711] CHIP:DMG: buffer_ptr = 187651380632528 - [1667200809.950643][13711:13711] CHIP:DMG: } - [1667200809.950698][13711:13711] CHIP:DMG: - [1667200809.950783][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200809.950842][13711:13711] CHIP:DMG: { - [1667200809.950900][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404151824020a181818290424ff0118 - [1667200809.950959][13711:13711] CHIP:DMG: } - [1667200809.951014][13711:13711] CHIP:DMG: - [1667200809.951174][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200809.951245][13711:13711] CHIP:DMG: { - [1667200809.951300][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200809.951387][13711:13711] CHIP:DMG: [ - [1667200809.951452][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200809.951536][13711:13711] CHIP:DMG: { - [1667200809.951636][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200809.951732][13711:13711] CHIP:DMG: { - [1667200809.951828][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200809.951921][13711:13711] CHIP:DMG: AttributePathIB = - [1667200809.952006][13711:13711] CHIP:DMG: { - [1667200809.952088][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200809.952288][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200809.952394][13711:13711] CHIP:DMG: Attribute = 0x0000_0015, - [1667200809.952490][13711:13711] CHIP:DMG: } - [1667200809.952592][13711:13711] CHIP:DMG: - [1667200809.952693][13711:13711] CHIP:DMG: Data = 10, - [1667200809.952784][13711:13711] CHIP:DMG: }, - [1667200809.952881][13711:13711] CHIP:DMG: - [1667200809.952949][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberofHolidaySchedulesSupported from the TH." - PICS: DRLK.C.F04 && DRLK.C.A0016 - verification: | - ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 - - Verify the " NumberofHolidaySchedulesSupported response" on TH(lock-app): - - [1667200848.087043][13711:13711] CHIP:EM: Handling via exchange: 16479r, Delegate: 0xaaaae6ead988 - [1667200848.087140][13711:13711] CHIP:IM: Received Read request - [1667200848.087340][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200848.087399][13711:13711] CHIP:DMG: { - [1667200848.087480][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200848.087554][13711:13711] CHIP:DMG: [ - [1667200848.087617][13711:13711] CHIP:DMG: AttributePathIB = - [1667200848.087712][13711:13711] CHIP:DMG: { - [1667200848.087791][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200848.087897][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200848.087965][13711:13711] CHIP:DMG: Attribute = 0x0000_0016, - [1667200848.088054][13711:13711] CHIP:DMG: } - [1667200848.088128][13711:13711] CHIP:DMG: - [1667200848.088187][13711:13711] CHIP:DMG: ], - [1667200848.088280][13711:13711] CHIP:DMG: - [1667200848.088349][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200848.088413][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200848.088497][13711:13711] CHIP:DMG: }, - [1667200848.088678][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200848.088931][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200848.089028][13711:13711] CHIP:DMG: Cluster 101, Attribute 16 is dirty - [1667200848.089085][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0016 (expanded=0) - [1667200848.089152][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200848.089221][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200848.089357][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200848.089964][13711:13711] CHIP:EM: <<< [E:16479r M:237327988 (Ack:125439008)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200848.090065][13711:13711] CHIP:IN: (S) Sending msg 237327988 on secure session with LSID: 52141 - [1667200848.090838][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:39517 | 237327988 | [Interaction Model (1) / Report Data (0x05) / Session = 59071 / Exchange = 16479] - [1667200848.090936][13711:13711] CHIP:DMG: Header Flags = - [1667200848.090994][13711:13711] CHIP:DMG: { - [1667200848.091081][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200848.091138][13711:13711] CHIP:DMG: { - [1667200848.091197][13711:13711] CHIP:DMG: AckMsg = 125439008 - [1667200848.091260][13711:13711] CHIP:DMG: NeedsAck = true - [1667200848.091315][13711:13711] CHIP:DMG: } - [1667200848.091388][13711:13711] CHIP:DMG: } - [1667200848.091469][13711:13711] CHIP:DMG: - [1667200848.091539][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200848.091595][13711:13711] CHIP:DMG: { - [1667200848.091644][13711:13711] CHIP:DMG: data = 00bfe6007456250e33683c49126a3cb360c608b7b1b8594e817d305dfe605a46a11e847daca99b5dc4c566621af9183d86d8c69b86f9c61ff1adb9b75d647ee115687dd09cc057 - [1667200848.091702][13711:13711] CHIP:DMG: buffer_ptr = 187651380632784 - [1667200848.091754][13711:13711] CHIP:DMG: } - [1667200848.091830][13711:13711] CHIP:DMG: - [1667200848.091905][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200848.091963][13711:13711] CHIP:DMG: { - [1667200848.092040][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404161824020a181818290424ff0118 - [1667200848.092097][13711:13711] CHIP:DMG: } - [1667200848.092146][13711:13711] CHIP:DMG: - [1667200848.092317][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200848.092421][13711:13711] CHIP:DMG: { - [1667200848.092480][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200848.092558][13711:13711] CHIP:DMG: [ - [1667200848.092642][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200848.092730][13711:13711] CHIP:DMG: { - [1667200848.092826][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200848.092910][13711:13711] CHIP:DMG: { - [1667200848.092996][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200848.093079][13711:13711] CHIP:DMG: AttributePathIB = - [1667200848.093190][13711:13711] CHIP:DMG: { - [1667200848.093282][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200848.093392][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200848.093503][13711:13711] CHIP:DMG: Attribute = 0x0000_0016, - [1667200848.093595][13711:13711] CHIP:DMG: } - [1667200848.093694][13711:13711] CHIP:DMG: - [1667200848.093815][13711:13711] CHIP:DMG: Data = 10, - [1667200848.093896][13711:13711] CHIP:DMG: }, - [1667200848.094007][13711:13711] CHIP:DMG: - [1667200848.094083][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads MaxPINCodedLength from the TH." - PICS: DRLK.C.F00 && DRLK.C.A0017 - verification: | - ./chip-tool doorlock read max-pincode-length 1 1 - - Verify the " MaxPINCodeLength response" on TH(lock-app): - - [1667200996.851058][13711:13711] CHIP:EM: Handling via exchange: 57904r, Delegate: 0xaaaae6ead988 - [1667200996.851156][13711:13711] CHIP:IM: Received Read request - [1667200996.851354][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667200996.851445][13711:13711] CHIP:DMG: { - [1667200996.851500][13711:13711] CHIP:DMG: AttributePathIBs = - [1667200996.851586][13711:13711] CHIP:DMG: [ - [1667200996.851650][13711:13711] CHIP:DMG: AttributePathIB = - [1667200996.851732][13711:13711] CHIP:DMG: { - [1667200996.851814][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200996.851916][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200996.852002][13711:13711] CHIP:DMG: Attribute = 0x0000_0017, - [1667200996.852110][13711:13711] CHIP:DMG: } - [1667200996.852193][13711:13711] CHIP:DMG: - [1667200996.852283][13711:13711] CHIP:DMG: ], - [1667200996.852356][13711:13711] CHIP:DMG: - [1667200996.852453][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667200996.852527][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667200996.852594][13711:13711] CHIP:DMG: }, - [1667200996.852780][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667200996.853051][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667200996.853120][13711:13711] CHIP:DMG: Cluster 101, Attribute 17 is dirty - [1667200996.853175][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0017 (expanded=0) - [1667200996.853244][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667200996.853325][13711:13711] CHIP:DMG: AccessControl: allowed - [1667200996.853438][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667200996.854059][13711:13711] CHIP:EM: <<< [E:57904r M:55134064 (Ack:89232911)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667200996.854160][13711:13711] CHIP:IN: (S) Sending msg 55134064 on secure session with LSID: 52143 - [1667200996.854929][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:37454 | 55134064 | [Interaction Model (1) / Report Data (0x05) / Session = 47259 / Exchange = 57904] - [1667200996.855030][13711:13711] CHIP:DMG: Header Flags = - [1667200996.855088][13711:13711] CHIP:DMG: { - [1667200996.855174][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667200996.855231][13711:13711] CHIP:DMG: { - [1667200996.855290][13711:13711] CHIP:DMG: AckMsg = 89232911 - [1667200996.855350][13711:13711] CHIP:DMG: NeedsAck = true - [1667200996.855404][13711:13711] CHIP:DMG: } - [1667200996.855476][13711:13711] CHIP:DMG: } - [1667200996.855556][13711:13711] CHIP:DMG: - [1667200996.855626][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667200996.855682][13711:13711] CHIP:DMG: { - [1667200996.855735][13711:13711] CHIP:DMG: data = 009bb800704749030cd27aada99c48b2a648a2bc6a9b7cf4cb9835c9102365a843cdea9a21d39fe0bd4e0897dfaa87d48451a2b37eed47446beebda60573a320972a5310b85e80 - [1667200996.855823][13711:13711] CHIP:DMG: buffer_ptr = 187651380634048 - [1667200996.855880][13711:13711] CHIP:DMG: } - [1667200996.855931][13711:13711] CHIP:DMG: - [1667200996.856033][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667200996.856091][13711:13711] CHIP:DMG: { - [1667200996.856140][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124041718240208181818290424ff0118 - [1667200996.856218][13711:13711] CHIP:DMG: } - [1667200996.856267][13711:13711] CHIP:DMG: - [1667200996.856420][13711:13711] CHIP:DMG: ReportDataMessage = - [1667200996.856485][13711:13711] CHIP:DMG: { - [1667200996.856562][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667200996.856647][13711:13711] CHIP:DMG: [ - [1667200996.856730][13711:13711] CHIP:DMG: AttributeReportIB = - [1667200996.856821][13711:13711] CHIP:DMG: { - [1667200996.856910][13711:13711] CHIP:DMG: AttributeDataIB = - [1667200996.857003][13711:13711] CHIP:DMG: { - [1667200996.857116][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667200996.857208][13711:13711] CHIP:DMG: AttributePathIB = - [1667200996.857312][13711:13711] CHIP:DMG: { - [1667200996.857387][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667200996.857673][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667200996.857778][13711:13711] CHIP:DMG: Attribute = 0x0000_0017, - [1667200996.857903][13711:13711] CHIP:DMG: } - [1667200996.858006][13711:13711] CHIP:DMG: - [1667200996.858105][13711:13711] CHIP:DMG: Data = 8, - [1667200996.858180][13711:13711] CHIP:DMG: }, - [1667200996.858276][13711:13711] CHIP:DMG: - [1667200996.858348][13711:13711] CHIP:DMG: }, - [1667200996.858454][13711:13711] CHIP:DMG: - disabled: true - - - label: "DUT reads MinPINCodedLength from the TH." - PICS: DRLK.C.F00 && DRLK.C.A0018 - verification: | - ./chip-tool doorlock read min-pincode-length 1 1 - - Verify the " MinPINCodeLength response" on TH(lock-app): - - [1667201051.254354][13711:13711] CHIP:EM: Handling via exchange: 23266r, Delegate: 0xaaaae6ead988 - [1667201051.254446][13711:13711] CHIP:IM: Received Read request - [1667201051.254715][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201051.254782][13711:13711] CHIP:DMG: { - [1667201051.254837][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201051.254903][13711:13711] CHIP:DMG: [ - [1667201051.254958][13711:13711] CHIP:DMG: AttributePathIB = - [1667201051.255051][13711:13711] CHIP:DMG: { - [1667201051.255132][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201051.255200][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201051.255281][13711:13711] CHIP:DMG: Attribute = 0x0000_0018, - [1667201051.255359][13711:13711] CHIP:DMG: } - [1667201051.255464][13711:13711] CHIP:DMG: - [1667201051.255536][13711:13711] CHIP:DMG: ], - [1667201051.255623][13711:13711] CHIP:DMG: - [1667201051.255690][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201051.255777][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201051.255839][13711:13711] CHIP:DMG: }, - [1667201051.256026][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201051.256283][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201051.256379][13711:13711] CHIP:DMG: Cluster 101, Attribute 18 is dirty - [1667201051.256434][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0018 (expanded=0) - [1667201051.256502][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201051.256583][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201051.256723][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201051.257345][13711:13711] CHIP:EM: <<< [E:23266r M:69831862 (Ack:160310186)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201051.257443][13711:13711] CHIP:IN: (S) Sending msg 69831862 on secure session with LSID: 52144 - [1667201051.258142][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:57741 | 69831862 | [Interaction Model (1) / Report Data (0x05) / Session = 8546 / Exchange = 23266] - [1667201051.258238][13711:13711] CHIP:DMG: Header Flags = - [1667201051.258296][13711:13711] CHIP:DMG: { - [1667201051.258384][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201051.258441][13711:13711] CHIP:DMG: { - [1667201051.258545][13711:13711] CHIP:DMG: AckMsg = 160310186 - [1667201051.258602][13711:13711] CHIP:DMG: NeedsAck = true - [1667201051.258658][13711:13711] CHIP:DMG: } - [1667201051.258730][13711:13711] CHIP:DMG: } - [1667201051.258812][13711:13711] CHIP:DMG: - [1667201051.258881][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201051.258938][13711:13711] CHIP:DMG: { - [1667201051.259016][13711:13711] CHIP:DMG: data = 00622100b68c29041cebbde678f115aa90787e47598b5725af4fa4ccba65222891c9e5eb5ed65007c41e333f2df0f23af867abaf2c80fc35afd3c4af855884219d99b869746ebd - [1667201051.259075][13711:13711] CHIP:DMG: buffer_ptr = 187651380632512 - [1667201051.259130][13711:13711] CHIP:DMG: } - [1667201051.259204][13711:13711] CHIP:DMG: - [1667201051.259280][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201051.259337][13711:13711] CHIP:DMG: { - [1667201051.259415][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124041818240206181818290424ff0118 - [1667201051.259476][13711:13711] CHIP:DMG: } - [1667201051.259529][13711:13711] CHIP:DMG: - [1667201051.259699][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201051.259765][13711:13711] CHIP:DMG: { - [1667201051.259844][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201051.259934][13711:13711] CHIP:DMG: [ - [1667201051.260023][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201051.260123][13711:13711] CHIP:DMG: { - [1667201051.260212][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201051.260304][13711:13711] CHIP:DMG: { - [1667201051.260395][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201051.260466][13711:13711] CHIP:DMG: AttributePathIB = - [1667201051.260572][13711:13711] CHIP:DMG: { - [1667201051.260669][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201051.260769][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201051.260893][13711:13711] CHIP:DMG: Attribute = 0x0000_0018, - [1667201051.260988][13711:13711] CHIP:DMG: } - [1667201051.261109][13711:13711] CHIP:DMG: - [1667201051.261230][13711:13711] CHIP:DMG: Data = 6, - [1667201051.261320][13711:13711] CHIP:DMG: }, - [1667201051.261436][13711:13711] CHIP:DMG: - [1667201051.261682][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads MaxRFIDCodedLength from the TH." - PICS: DRLK.C.F01 && DRLK.C.A0019 - verification: | - ./chip-tool doorlock read max-rfidcode-length 1 1 - - Verify the " MaxRFIDCodeLength response" on TH(lock-app): - - [1667201100.421062][13711:13711] CHIP:EM: Handling via exchange: 9890r, Delegate: 0xaaaae6ead988 - [1667201100.421158][13711:13711] CHIP:IM: Received Read request - [1667201100.421351][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201100.421409][13711:13711] CHIP:DMG: { - [1667201100.421487][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201100.421561][13711:13711] CHIP:DMG: [ - [1667201100.421622][13711:13711] CHIP:DMG: AttributePathIB = - [1667201100.421718][13711:13711] CHIP:DMG: { - [1667201100.421796][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201100.421912][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201100.422004][13711:13711] CHIP:DMG: Attribute = 0x0000_0019, - [1667201100.422106][13711:13711] CHIP:DMG: } - [1667201100.422176][13711:13711] CHIP:DMG: - [1667201100.422247][13711:13711] CHIP:DMG: ], - [1667201100.422319][13711:13711] CHIP:DMG: - [1667201100.422402][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201100.422509][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201100.422569][13711:13711] CHIP:DMG: }, - [1667201100.422760][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201100.423015][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201100.423089][13711:13711] CHIP:DMG: Cluster 101, Attribute 19 is dirty - [1667201100.423144][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0019 (expanded=0) - [1667201100.423238][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201100.423312][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201100.423447][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201100.424068][13711:13711] CHIP:EM: <<< [E:9890r M:19094135 (Ack:202466208)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201100.424167][13711:13711] CHIP:IN: (S) Sending msg 19094135 on secure session with LSID: 52145 - [1667201100.424866][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:53297 | 19094135 | [Interaction Model (1) / Report Data (0x05) / Session = 13743 / Exchange = 9890] - [1667201100.424961][13711:13711] CHIP:DMG: Header Flags = - [1667201100.425019][13711:13711] CHIP:DMG: { - [1667201100.425105][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201100.425162][13711:13711] CHIP:DMG: { - [1667201100.425218][13711:13711] CHIP:DMG: AckMsg = 202466208 - [1667201100.425274][13711:13711] CHIP:DMG: NeedsAck = true - [1667201100.425329][13711:13711] CHIP:DMG: } - [1667201100.425400][13711:13711] CHIP:DMG: } - [1667201100.425477][13711:13711] CHIP:DMG: - [1667201100.425546][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201100.425603][13711:13711] CHIP:DMG: { - [1667201100.425683][13711:13711] CHIP:DMG: data = 00af3500775a2301e5846b5ec92e23f1ad83c8d0850fe328bf98e0e6431fcdbc2f184f3303932893f6f6b215d951c44ef9ab96330760e176888331543c3bab29ea1e2bf7fd0107 - [1667201100.425743][13711:13711] CHIP:DMG: buffer_ptr = 187651380632960 - [1667201100.425797][13711:13711] CHIP:DMG: } - [1667201100.425849][13711:13711] CHIP:DMG: - [1667201100.425919][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201100.425998][13711:13711] CHIP:DMG: { - [1667201100.426053][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124041918240214181818290424ff0118 - [1667201100.426109][13711:13711] CHIP:DMG: } - [1667201100.426182][13711:13711] CHIP:DMG: - [1667201100.426327][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201100.426414][13711:13711] CHIP:DMG: { - [1667201100.426507][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201100.426587][13711:13711] CHIP:DMG: [ - [1667201100.426674][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201100.426763][13711:13711] CHIP:DMG: { - [1667201100.426860][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201100.426931][13711:13711] CHIP:DMG: { - [1667201100.427034][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201100.427103][13711:13711] CHIP:DMG: AttributePathIB = - [1667201100.427197][13711:13711] CHIP:DMG: { - [1667201100.427310][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201100.427412][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201100.427529][13711:13711] CHIP:DMG: Attribute = 0x0000_0019, - [1667201100.427626][13711:13711] CHIP:DMG: } - [1667201100.427747][13711:13711] CHIP:DMG: - [1667201100.427872][13711:13711] CHIP:DMG: Data = 20, - [1667201100.427951][13711:13711] CHIP:DMG: }, - [1667201100.428066][13711:13711] CHIP:DMG: - [1667201100.428142][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads MinRFIDCodedLength from the TH." - PICS: DRLK.C.F01 && DRLK.C.A001a - verification: | - ./chip-tool doorlock read min-rfidcode-length 1 1 - - Verify the " MinRFIDCodeLength response" on TH(lock-app): - - [1667201144.645176][13711:13711] CHIP:EM: Handling via exchange: 1122r, Delegate: 0xaaaae6ead988 - [1667201144.645298][13711:13711] CHIP:IM: Received Read request - [1667201144.645497][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201144.645566][13711:13711] CHIP:DMG: { - [1667201144.645643][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201144.645709][13711:13711] CHIP:DMG: [ - [1667201144.645797][13711:13711] CHIP:DMG: AttributePathIB = - [1667201144.645863][13711:13711] CHIP:DMG: { - [1667201144.645942][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201144.646035][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201144.646104][13711:13711] CHIP:DMG: Attribute = 0x0000_001A, - [1667201144.646198][13711:13711] CHIP:DMG: } - [1667201144.646279][13711:13711] CHIP:DMG: - [1667201144.646370][13711:13711] CHIP:DMG: ], - [1667201144.646440][13711:13711] CHIP:DMG: - [1667201144.646549][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201144.646640][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201144.646699][13711:13711] CHIP:DMG: }, - [1667201144.646889][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201144.647143][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201144.647216][13711:13711] CHIP:DMG: Cluster 101, Attribute 1a is dirty - [1667201144.647272][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_001A (expanded=0) - [1667201144.647365][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201144.647443][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201144.647578][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201144.648218][13711:13711] CHIP:EM: <<< [E:1122r M:36996271 (Ack:110932959)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201144.648319][13711:13711] CHIP:IN: (S) Sending msg 36996271 on secure session with LSID: 52146 - [1667201144.649024][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:34945 | 36996271 | [Interaction Model (1) / Report Data (0x05) / Session = 38501 / Exchange = 1122] - [1667201144.649119][13711:13711] CHIP:DMG: Header Flags = - [1667201144.649176][13711:13711] CHIP:DMG: { - [1667201144.649261][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201144.649318][13711:13711] CHIP:DMG: { - [1667201144.649378][13711:13711] CHIP:DMG: AckMsg = 110932959 - [1667201144.649435][13711:13711] CHIP:DMG: NeedsAck = true - [1667201144.649488][13711:13711] CHIP:DMG: } - [1667201144.649559][13711:13711] CHIP:DMG: } - [1667201144.649641][13711:13711] CHIP:DMG: - [1667201144.649710][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201144.649766][13711:13711] CHIP:DMG: { - [1667201144.649844][13711:13711] CHIP:DMG: data = 00659600af843402f4a0dd2ab3894b7347755726b8fd32c3e1f6b3a8186b8ab59be244d25373d490f3ddb094ef12d73c4a07b24c6720ab1d3a026e57b211d1434d7b1290028982 - [1667201144.649903][13711:13711] CHIP:DMG: buffer_ptr = 187651380635792 - [1667201144.649957][13711:13711] CHIP:DMG: } - [1667201144.650031][13711:13711] CHIP:DMG: - [1667201144.650109][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201144.650160][13711:13711] CHIP:DMG: { - [1667201144.650237][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124041a1824020a181818290424ff0118 - [1667201144.650295][13711:13711] CHIP:DMG: } - [1667201144.650347][13711:13711] CHIP:DMG: - [1667201144.650551][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201144.650619][13711:13711] CHIP:DMG: { - [1667201144.650698][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201144.650775][13711:13711] CHIP:DMG: [ - [1667201144.650858][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201144.650935][13711:13711] CHIP:DMG: { - [1667201144.651001][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201144.651093][13711:13711] CHIP:DMG: { - [1667201144.651165][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201144.651261][13711:13711] CHIP:DMG: AttributePathIB = - [1667201144.651356][13711:13711] CHIP:DMG: { - [1667201144.651475][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201144.651597][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201144.651699][13711:13711] CHIP:DMG: Attribute = 0x0000_001A, - [1667201144.651809][13711:13711] CHIP:DMG: } - [1667201144.651909][13711:13711] CHIP:DMG: - [1667201144.652024][13711:13711] CHIP:DMG: Data = 10, - [1667201144.652114][13711:13711] CHIP:DMG: }, - [1667201144.652227][13711:13711] CHIP:DMG: - [1667201144.652297][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads CredentialRulesSupport from the TH." - PICS: DRLK.C.F08 && DRLK.C.A001b - verification: | - ./chip-tool doorlock read credential-rules-support 1 1 - - Verify the " CredentialRulesSupport response" on TH(lock-app): - - - [1667201179.769942][13711:13711] CHIP:EM: Handling via exchange: 29374r, Delegate: 0xaaaae6ead988 - [1667201179.770039][13711:13711] CHIP:IM: Received Read request - [1667201179.770213][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201179.770279][13711:13711] CHIP:DMG: { - [1667201179.770334][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201179.770399][13711:13711] CHIP:DMG: [ - [1667201179.770579][13711:13711] CHIP:DMG: AttributePathIB = - [1667201179.770660][13711:13711] CHIP:DMG: { - [1667201179.770773][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201179.770873][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201179.770966][13711:13711] CHIP:DMG: Attribute = 0x0000_001B, - [1667201179.771029][13711:13711] CHIP:DMG: } - [1667201179.771102][13711:13711] CHIP:DMG: - [1667201179.771160][13711:13711] CHIP:DMG: ], - [1667201179.771231][13711:13711] CHIP:DMG: - [1667201179.771302][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201179.771367][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201179.771427][13711:13711] CHIP:DMG: }, - [1667201179.771595][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201179.771840][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201179.771915][13711:13711] CHIP:DMG: Cluster 101, Attribute 1b is dirty - [1667201179.771970][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_001B (expanded=0) - [1667201179.772068][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201179.772148][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201179.772265][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201179.772888][13711:13711] CHIP:EM: <<< [E:29374r M:159081865 (Ack:64676982)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201179.773003][13711:13711] CHIP:IN: (S) Sending msg 159081865 on secure session with LSID: 52147 - [1667201179.773762][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:57200 | 159081865 | [Interaction Model (1) / Report Data (0x05) / Session = 50772 / Exchange = 29374] - [1667201179.773868][13711:13711] CHIP:DMG: Header Flags = - [1667201179.773927][13711:13711] CHIP:DMG: { - [1667201179.774007][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201179.774058][13711:13711] CHIP:DMG: { - [1667201179.774124][13711:13711] CHIP:DMG: AckMsg = 64676982 - [1667201179.774181][13711:13711] CHIP:DMG: NeedsAck = true - [1667201179.774236][13711:13711] CHIP:DMG: } - [1667201179.774309][13711:13711] CHIP:DMG: } - [1667201179.774365][13711:13711] CHIP:DMG: - [1667201179.774437][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201179.774544][13711:13711] CHIP:DMG: { - [1667201179.774593][13711:13711] CHIP:DMG: data = 0054c60089657b09f1bcd261723b6b0f5019474f7c2d6feb34c056640ffdc50fb2b4f8d447a99b560047655b0a718ae6c70ffe39a500a86b0826e337150e63c20c3b6df8b85246 - [1667201179.774646][13711:13711] CHIP:DMG: buffer_ptr = 187651380636528 - [1667201179.774700][13711:13711] CHIP:DMG: } - [1667201179.774751][13711:13711] CHIP:DMG: - [1667201179.774833][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201179.774890][13711:13711] CHIP:DMG: { - [1667201179.774944][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124041b18240201181818290424ff0118 - [1667201179.775032][13711:13711] CHIP:DMG: } - [1667201179.775084][13711:13711] CHIP:DMG: - [1667201179.775239][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201179.775307][13711:13711] CHIP:DMG: { - [1667201179.775361][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201179.775438][13711:13711] CHIP:DMG: [ - [1667201179.775500][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201179.775589][13711:13711] CHIP:DMG: { - [1667201179.775687][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201179.775779][13711:13711] CHIP:DMG: { - [1667201179.775875][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201179.775966][13711:13711] CHIP:DMG: AttributePathIB = - [1667201179.776050][13711:13711] CHIP:DMG: { - [1667201179.776131][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201179.776231][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201179.776332][13711:13711] CHIP:DMG: Attribute = 0x0000_001B, - [1667201179.776427][13711:13711] CHIP:DMG: } - [1667201179.776510][13711:13711] CHIP:DMG: - [1667201179.776586][13711:13711] CHIP:DMG: Data = 1, - [1667201179.776677][13711:13711] CHIP:DMG: }, - [1667201179.776774][13711:13711] CHIP:DMG: - [1667201179.776846][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads Language from the TH." - PICS: DRLK.C.A0021 - verification: | - ./chip-tool doorlock read language 1 1 - - Verify the " Language response" on TH(lock-app): - - [1667201243.690919][13711:13711] CHIP:EM: Handling via exchange: 48239r, Delegate: 0xaaaae6ead988 - [1667201243.691186][13711:13711] CHIP:IM: Received Read request - [1667201243.691391][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201243.691459][13711:13711] CHIP:DMG: { - [1667201243.691515][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201243.691607][13711:13711] CHIP:DMG: [ - [1667201243.691669][13711:13711] CHIP:DMG: AttributePathIB = - [1667201243.691739][13711:13711] CHIP:DMG: { - [1667201243.691817][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201243.691926][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201243.691994][13711:13711] CHIP:DMG: Attribute = 0x0000_0021, - [1667201243.692093][13711:13711] CHIP:DMG: } - [1667201243.692171][13711:13711] CHIP:DMG: - [1667201243.692237][13711:13711] CHIP:DMG: ], - [1667201243.692336][13711:13711] CHIP:DMG: - [1667201243.692405][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201243.692506][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201243.692569][13711:13711] CHIP:DMG: }, - [1667201243.692757][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201243.693013][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201243.693088][13711:13711] CHIP:DMG: Cluster 101, Attribute 21 is dirty - [1667201243.693143][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0021 (expanded=0) - [1667201243.693212][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201243.693315][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201243.693430][13711:13711] CHIP:DMG: Sending report (payload has 39 bytes)... - [1667201243.694067][13711:13711] CHIP:EM: <<< [E:48239r M:174717946 (Ack:218677855)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201243.694169][13711:13711] CHIP:IN: (S) Sending msg 174717946 on secure session with LSID: 52148 - [1667201243.694943][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:39974 | 174717946 | [Interaction Model (1) / Report Data (0x05) / Session = 18263 / Exchange = 48239] - [1667201243.695043][13711:13711] CHIP:DMG: Header Flags = - [1667201243.695101][13711:13711] CHIP:DMG: { - [1667201243.695189][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201243.695246][13711:13711] CHIP:DMG: { - [1667201243.695307][13711:13711] CHIP:DMG: AckMsg = 218677855 - [1667201243.695372][13711:13711] CHIP:DMG: NeedsAck = true - [1667201243.695428][13711:13711] CHIP:DMG: } - [1667201243.695500][13711:13711] CHIP:DMG: } - [1667201243.695579][13711:13711] CHIP:DMG: - [1667201243.695643][13711:13711] CHIP:DMG: Encrypted Payload (73 bytes) = - [1667201243.695700][13711:13711] CHIP:DMG: { - [1667201243.695760][13711:13711] CHIP:DMG: data = 00574700fafb690a7d6fca5f552f8748c59bfc714a41bca6527668dde748dcae4297b158ef2c0cd7c2945f1c3fcc2e86e98c85d1f5f1e40ce7eeb5fb004c5165fe6f4045a9265199cf - [1667201243.695842][13711:13711] CHIP:DMG: buffer_ptr = 187651380633456 - [1667201243.695893][13711:13711] CHIP:DMG: } - [1667201243.695946][13711:13711] CHIP:DMG: - [1667201243.696022][13711:13711] CHIP:DMG: Decrypted Payload (39 bytes) = - [1667201243.696073][13711:13711] CHIP:DMG: { - [1667201243.696153][13711:13711] CHIP:DMG: data = 153601153501260000d72c04370124020125030101240421182c0202656e181818290424ff0118 - [1667201243.696210][13711:13711] CHIP:DMG: } - [1667201243.696263][13711:13711] CHIP:DMG: - [1667201243.696440][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201243.696511][13711:13711] CHIP:DMG: { - [1667201243.696568][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201243.696655][13711:13711] CHIP:DMG: [ - [1667201243.696718][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201243.696812][13711:13711] CHIP:DMG: { - [1667201243.696906][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201243.696989][13711:13711] CHIP:DMG: { - [1667201243.697098][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201243.697177][13711:13711] CHIP:DMG: AttributePathIB = - [1667201243.697262][13711:13711] CHIP:DMG: { - [1667201243.697377][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201243.697469][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201243.697581][13711:13711] CHIP:DMG: Attribute = 0x0000_0021, - [1667201243.697667][13711:13711] CHIP:DMG: } - [1667201243.697777][13711:13711] CHIP:DMG: - [1667201243.697893][13711:13711] CHIP:DMG: Data = "en" (2 chars), - [1667201243.697977][13711:13711] CHIP:DMG: }, - [1667201243.698100][13711:13711] CHIP:DMG: - [1667201243.698176][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads LEDSettings from the TH." - PICS: DRLK.C.A0022 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read ledsettings 1 1 - - Verify the " LEDSettings response" on TH(lock-app): - - [1667201388.324546][13711:13711] CHIP:EM: Handling via exchange: 24356r, Delegate: 0xaaaae6ead988 - [1667201388.324667][13711:13711] CHIP:IM: Received Read request - [1667201388.324840][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201388.324910][13711:13711] CHIP:DMG: { - [1667201388.324985][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201388.325043][13711:13711] CHIP:DMG: [ - [1667201388.325109][13711:13711] CHIP:DMG: AttributePathIB = - [1667201388.325172][13711:13711] CHIP:DMG: { - [1667201388.325257][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201388.325325][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201388.325393][13711:13711] CHIP:DMG: Attribute = 0x0000_0022, - [1667201388.325462][13711:13711] CHIP:DMG: } - [1667201388.325527][13711:13711] CHIP:DMG: - [1667201388.325606][13711:13711] CHIP:DMG: ], - [1667201388.325671][13711:13711] CHIP:DMG: - [1667201388.325739][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201388.325795][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201388.325847][13711:13711] CHIP:DMG: }, - [1667201388.326025][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201388.326302][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201388.326382][13711:13711] CHIP:DMG: Cluster 101, Attribute 22 is dirty - [1667201388.326429][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0022 (expanded=0) - [1667201388.326712][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667201388.327413][13711:13711] CHIP:EM: <<< [E:24356r M:47158085 (Ack:234903595)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201388.327530][13711:13711] CHIP:IN: (S) Sending msg 47158085 on secure session with LSID: 52149 - [1667201388.328285][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:45704 | 47158085 | [Interaction Model (1) / Report Data (0x05) / Session = 52502 / Exchange = 24356] - [1667201388.328398][13711:13711] CHIP:DMG: Header Flags = - [1667201388.328460][13711:13711] CHIP:DMG: { - [1667201388.328548][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201388.328610][13711:13711] CHIP:DMG: { - [1667201388.328674][13711:13711] CHIP:DMG: AckMsg = 234903595 - [1667201388.328741][13711:13711] CHIP:DMG: NeedsAck = true - [1667201388.328802][13711:13711] CHIP:DMG: } - [1667201388.328881][13711:13711] CHIP:DMG: } - [1667201388.328931][13711:13711] CHIP:DMG: - [1667201388.329004][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667201388.329055][13711:13711] CHIP:DMG: { - [1667201388.329111][13711:13711] CHIP:DMG: data = 0016cd004593cf02f340a1fe449ff2eda8a9ce6b2d8f3c2ad223567e403fc5580e4c6089cf9310afdf64782038dea4562ff551006628e551bdb9738520bb1b7ba77ad468 - [1667201388.329167][13711:13711] CHIP:DMG: buffer_ptr = 187651380638736 - [1667201388.329217][13711:13711] CHIP:DMG: } - [1667201388.329271][13711:13711] CHIP:DMG: - [1667201388.329343][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667201388.329402][13711:13711] CHIP:DMG: { - [1667201388.329462][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124042218350124008618181818290424ff0118 - [1667201388.329519][13711:13711] CHIP:DMG: } - [1667201388.329574][13711:13711] CHIP:DMG: - [1667201388.329713][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201388.329781][13711:13711] CHIP:DMG: { - [1667201388.329838][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201388.329919][13711:13711] CHIP:DMG: [ - [1667201388.330011][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201388.330104][13711:13711] CHIP:DMG: { - [1667201388.330182][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667201388.330253][13711:13711] CHIP:DMG: { - [1667201388.330368][13711:13711] CHIP:DMG: AttributePathIB = - [1667201388.330516][13711:13711] CHIP:DMG: { - [1667201388.330625][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201388.330728][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201388.330827][13711:13711] CHIP:DMG: Attribute = 0x0000_0022, - [1667201388.330926][13711:13711] CHIP:DMG: } - [1667201388.331060][13711:13711] CHIP:DMG: - [1667201388.331147][13711:13711] CHIP:DMG: StatusIB = - [1667201388.331247][13711:13711] CHIP:DMG: { - [1667201388.331347][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667201388.331448][13711:13711] CHIP:DMG: }, - [1667201388.331546][13711:13711] CHIP:DMG: - [1667201388.331641][13711:13711] CHIP:DMG: }, - [1667201388.331733][13711:13711] CHIP:DMG: - disabled: true - - - label: "DUT reads AutoRelockTime from the TH." - PICS: DRLK.C.A0023 - verification: | - ./chip-tool doorlock read auto-relock-time 1 1 - - Verify the " AutoRelockTime response" on TH(lock-app): - - [1667201427.189852][13711:13711] CHIP:EM: Handling via exchange: 34333r, Delegate: 0xaaaae6ead988 - [1667201427.189949][13711:13711] CHIP:IM: Received Read request - [1667201427.190145][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201427.190246][13711:13711] CHIP:DMG: { - [1667201427.190302][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201427.190368][13711:13711] CHIP:DMG: [ - [1667201427.190430][13711:13711] CHIP:DMG: AttributePathIB = - [1667201427.190577][13711:13711] CHIP:DMG: { - [1667201427.190653][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201427.190765][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201427.190847][13711:13711] CHIP:DMG: Attribute = 0x0000_0023, - [1667201427.190951][13711:13711] CHIP:DMG: } - [1667201427.191033][13711:13711] CHIP:DMG: - [1667201427.191127][13711:13711] CHIP:DMG: ], - [1667201427.191201][13711:13711] CHIP:DMG: - [1667201427.191283][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201427.191350][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201427.191410][13711:13711] CHIP:DMG: }, - [1667201427.191597][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201427.191831][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201427.191928][13711:13711] CHIP:DMG: Cluster 101, Attribute 23 is dirty - [1667201427.191985][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0023 (expanded=0) - [1667201427.192055][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201427.192157][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201427.192272][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201427.192895][13711:13711] CHIP:EM: <<< [E:34333r M:259548114 (Ack:204482546)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201427.192994][13711:13711] CHIP:IN: (S) Sending msg 259548114 on secure session with LSID: 52150 - [1667201427.193705][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:56864 | 259548114 | [Interaction Model (1) / Report Data (0x05) / Session = 63914 / Exchange = 34333] - [1667201427.193804][13711:13711] CHIP:DMG: Header Flags = - [1667201427.193861][13711:13711] CHIP:DMG: { - [1667201427.193948][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201427.194004][13711:13711] CHIP:DMG: { - [1667201427.194063][13711:13711] CHIP:DMG: AckMsg = 204482546 - [1667201427.194119][13711:13711] CHIP:DMG: NeedsAck = true - [1667201427.194172][13711:13711] CHIP:DMG: } - [1667201427.194244][13711:13711] CHIP:DMG: } - [1667201427.194320][13711:13711] CHIP:DMG: - [1667201427.194390][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201427.194446][13711:13711] CHIP:DMG: { - [1667201427.194571][13711:13711] CHIP:DMG: data = 00aaf900d263780f90b504a19e79fffbc46aae29c6b4566ec67e67fc0a459f63094430f20620d39d9ecc8b79073d75c5381d196ed4490b509ba8f8d041a199b8bebcddd5acb735 - [1667201427.194630][13711:13711] CHIP:DMG: buffer_ptr = 187651380633856 - [1667201427.194685][13711:13711] CHIP:DMG: } - [1667201427.194759][13711:13711] CHIP:DMG: - [1667201427.194836][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201427.194886][13711:13711] CHIP:DMG: { - [1667201427.194963][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404231824023c181818290424ff0118 - [1667201427.195019][13711:13711] CHIP:DMG: } - [1667201427.195071][13711:13711] CHIP:DMG: - [1667201427.195219][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201427.195284][13711:13711] CHIP:DMG: { - [1667201427.195338][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201427.195412][13711:13711] CHIP:DMG: [ - [1667201427.195473][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201427.195559][13711:13711] CHIP:DMG: { - [1667201427.195626][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201427.195717][13711:13711] CHIP:DMG: { - [1667201427.195811][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201427.195893][13711:13711] CHIP:DMG: AttributePathIB = - [1667201427.195970][13711:13711] CHIP:DMG: { - [1667201427.196067][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201427.196169][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201427.196269][13711:13711] CHIP:DMG: Attribute = 0x0000_0023, - [1667201427.196366][13711:13711] CHIP:DMG: } - [1667201427.196464][13711:13711] CHIP:DMG: - [1667201427.196539][13711:13711] CHIP:DMG: Data = 60, - [1667201427.196620][13711:13711] CHIP:DMG: }, - [1667201427.196714][13711:13711] CHIP:DMG: - [1667201427.196785][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads SoundVolume from the TH." - PICS: DRLK.C.A0024 - verification: | - ./chip-tool doorlock read sound-volume 1 1 - - Verify the " SoundVolume response" on TH(lock-app): - - [1667201709.019168][13711:13711] CHIP:EM: Handling via exchange: 14570r, Delegate: 0xaaaae6ead988 - [1667201709.019270][13711:13711] CHIP:IM: Received Read request - [1667201709.019476][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201709.019539][13711:13711] CHIP:DMG: { - [1667201709.019598][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201709.019691][13711:13711] CHIP:DMG: [ - [1667201709.019756][13711:13711] CHIP:DMG: AttributePathIB = - [1667201709.019830][13711:13711] CHIP:DMG: { - [1667201709.019905][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201709.020000][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201709.020075][13711:13711] CHIP:DMG: Attribute = 0x0000_0024, - [1667201709.020135][13711:13711] CHIP:DMG: } - [1667201709.020199][13711:13711] CHIP:DMG: - [1667201709.020256][13711:13711] CHIP:DMG: ], - [1667201709.020331][13711:13711] CHIP:DMG: - [1667201709.020400][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201709.020493][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201709.020648][13711:13711] CHIP:DMG: }, - [1667201709.020855][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201709.021098][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201709.021179][13711:13711] CHIP:DMG: Cluster 101, Attribute 24 is dirty - [1667201709.021239][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0024 (expanded=0) - [1667201709.021311][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201709.021389][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201709.021534][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201709.022196][13711:13711] CHIP:EM: <<< [E:14570r M:186047417 (Ack:156371357)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201709.022337][13711:13711] CHIP:IN: (S) Sending msg 186047417 on secure session with LSID: 52151 - [1667201709.023169][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:36561 | 186047417 | [Interaction Model (1) / Report Data (0x05) / Session = 12720 / Exchange = 14570] - [1667201709.023281][13711:13711] CHIP:DMG: Header Flags = - [1667201709.023340][13711:13711] CHIP:DMG: { - [1667201709.023431][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201709.023486][13711:13711] CHIP:DMG: { - [1667201709.023550][13711:13711] CHIP:DMG: AckMsg = 156371357 - [1667201709.023609][13711:13711] CHIP:DMG: NeedsAck = true - [1667201709.023666][13711:13711] CHIP:DMG: } - [1667201709.023742][13711:13711] CHIP:DMG: } - [1667201709.023800][13711:13711] CHIP:DMG: - [1667201709.023898][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201709.023963][13711:13711] CHIP:DMG: { - [1667201709.024012][13711:13711] CHIP:DMG: data = 00b03100b9db160b70bed43cb9adb99c04b90dc159b6d5547d4abec77d5fb0694a6e37dd75124e40724a9a070bb698089729fc4ec8d23979b0a7124f38ed096b5e9ae55e8ea8d9 - [1667201709.024078][13711:13711] CHIP:DMG: buffer_ptr = 187651380639824 - [1667201709.024135][13711:13711] CHIP:DMG: } - [1667201709.024190][13711:13711] CHIP:DMG: - [1667201709.024270][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201709.024331][13711:13711] CHIP:DMG: { - [1667201709.024411][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124042418240200181818290424ff0118 - [1667201709.024473][13711:13711] CHIP:DMG: } - [1667201709.024520][13711:13711] CHIP:DMG: - [1667201709.024678][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201709.024748][13711:13711] CHIP:DMG: { - [1667201709.024805][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201709.024885][13711:13711] CHIP:DMG: [ - [1667201709.024950][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201709.025039][13711:13711] CHIP:DMG: { - [1667201709.025124][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201709.025221][13711:13711] CHIP:DMG: { - [1667201709.025317][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201709.025412][13711:13711] CHIP:DMG: AttributePathIB = - [1667201709.025513][13711:13711] CHIP:DMG: { - [1667201709.025621][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201709.025726][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201709.025828][13711:13711] CHIP:DMG: Attribute = 0x0000_0024, - [1667201709.025924][13711:13711] CHIP:DMG: } - [1667201709.026009][13711:13711] CHIP:DMG: - [1667201709.026110][13711:13711] CHIP:DMG: Data = 0, - [1667201709.026202][13711:13711] CHIP:DMG: }, - [1667201709.026308][13711:13711] CHIP:DMG: - [1667201709.026369][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads OperatingMode from the TH." - PICS: DRLK.C.A0025 - verification: | - ./chip-tool doorlock read operating-mode 1 1 - - Verify the " OperatingMode response" on TH(lock-app): - - [1667201750.925200][13711:13711] CHIP:EM: Handling via exchange: 61785r, Delegate: 0xaaaae6ead988 - [1667201750.925301][13711:13711] CHIP:IM: Received Read request - [1667201750.925472][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201750.925538][13711:13711] CHIP:DMG: { - [1667201750.925593][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201750.925659][13711:13711] CHIP:DMG: [ - [1667201750.925720][13711:13711] CHIP:DMG: AttributePathIB = - [1667201750.925799][13711:13711] CHIP:DMG: { - [1667201750.925880][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201750.926007][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201750.926098][13711:13711] CHIP:DMG: Attribute = 0x0000_0025, - [1667201750.926168][13711:13711] CHIP:DMG: } - [1667201750.926241][13711:13711] CHIP:DMG: - [1667201750.926314][13711:13711] CHIP:DMG: ], - [1667201750.926387][13711:13711] CHIP:DMG: - [1667201750.926454][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201750.926586][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201750.926658][13711:13711] CHIP:DMG: }, - [1667201750.926827][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201750.927080][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201750.927158][13711:13711] CHIP:DMG: Cluster 101, Attribute 25 is dirty - [1667201750.927243][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0025 (expanded=0) - [1667201750.927313][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201750.927390][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201750.927509][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667201750.928131][13711:13711] CHIP:EM: <<< [E:61785r M:138154621 (Ack:230372052)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201750.928250][13711:13711] CHIP:IN: (S) Sending msg 138154621 on secure session with LSID: 52152 - [1667201750.929045][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:50684 | 138154621 | [Interaction Model (1) / Report Data (0x05) / Session = 17051 / Exchange = 61785] - [1667201750.929159][13711:13711] CHIP:DMG: Header Flags = - [1667201750.929218][13711:13711] CHIP:DMG: { - [1667201750.929306][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201750.929356][13711:13711] CHIP:DMG: { - [1667201750.929414][13711:13711] CHIP:DMG: AckMsg = 230372052 - [1667201750.929471][13711:13711] CHIP:DMG: NeedsAck = true - [1667201750.929526][13711:13711] CHIP:DMG: } - [1667201750.929599][13711:13711] CHIP:DMG: } - [1667201750.929656][13711:13711] CHIP:DMG: - [1667201750.929729][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667201750.929786][13711:13711] CHIP:DMG: { - [1667201750.929840][13711:13711] CHIP:DMG: data = 009b42007d123c08a1553585d5d560bd51dfc596a9f36d457123ca7b53ce886a6044b96c2446014629a711637e83a833cb9f66a1a6fdf5ab20dfdab11ff1c0d45ed0c38ee1c0d7 - [1667201750.929900][13711:13711] CHIP:DMG: buffer_ptr = 187651380638400 - [1667201750.929954][13711:13711] CHIP:DMG: } - [1667201750.930007][13711:13711] CHIP:DMG: - [1667201750.930083][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667201750.930140][13711:13711] CHIP:DMG: { - [1667201750.930195][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124042518240200181818290424ff0118 - [1667201750.930251][13711:13711] CHIP:DMG: } - [1667201750.930303][13711:13711] CHIP:DMG: - [1667201750.930503][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201750.930566][13711:13711] CHIP:DMG: { - [1667201750.930616][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201750.930695][13711:13711] CHIP:DMG: [ - [1667201750.930757][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201750.930850][13711:13711] CHIP:DMG: { - [1667201750.930925][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201750.931007][13711:13711] CHIP:DMG: { - [1667201750.931131][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201750.931224][13711:13711] CHIP:DMG: AttributePathIB = - [1667201750.931318][13711:13711] CHIP:DMG: { - [1667201750.931406][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201750.931484][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201750.931573][13711:13711] CHIP:DMG: Attribute = 0x0000_0025, - [1667201750.931669][13711:13711] CHIP:DMG: } - [1667201750.931769][13711:13711] CHIP:DMG: - [1667201750.931956][13711:13711] CHIP:DMG: Data = 0, - [1667201750.932032][13711:13711] CHIP:DMG: }, - [1667201750.932120][13711:13711] CHIP:DMG: - [1667201750.932193][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads SupportedOperatingModes from the TH." - PICS: DRLK.C.A0026 - verification: | - ./chip-tool doorlock read supported-operating-modes 1 1 - - Verify the " SupportedOperatingModes response" on TH(lock-app): - - - [1667201865.290102][13711:13711] CHIP:EM: Handling via exchange: 59530r, Delegate: 0xaaaae6ead988 - [1667201865.290199][13711:13711] CHIP:IM: Received Read request - [1667201865.290400][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201865.290522][13711:13711] CHIP:DMG: { - [1667201865.290584][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201865.290650][13711:13711] CHIP:DMG: [ - [1667201865.290728][13711:13711] CHIP:DMG: AttributePathIB = - [1667201865.290807][13711:13711] CHIP:DMG: { - [1667201865.290909][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201865.290989][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201865.291091][13711:13711] CHIP:DMG: Attribute = 0x0000_0026, - [1667201865.291163][13711:13711] CHIP:DMG: } - [1667201865.291231][13711:13711] CHIP:DMG: - [1667201865.291289][13711:13711] CHIP:DMG: ], - [1667201865.291383][13711:13711] CHIP:DMG: - [1667201865.291448][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201865.291513][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201865.291587][13711:13711] CHIP:DMG: }, - [1667201865.291776][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201865.292031][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201865.292105][13711:13711] CHIP:DMG: Cluster 101, Attribute 26 is dirty - [1667201865.292160][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0026 (expanded=0) - [1667201865.292255][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667201865.292332][13711:13711] CHIP:DMG: AccessControl: allowed - [1667201865.292471][13711:13711] CHIP:DMG: Sending report (payload has 38 bytes)... - [1667201865.293094][13711:13711] CHIP:EM: <<< [E:59530r M:180767550 (Ack:36313486)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201865.293192][13711:13711] CHIP:IN: (S) Sending msg 180767550 on secure session with LSID: 52153 - [1667201865.293903][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:46732 | 180767550 | [Interaction Model (1) / Report Data (0x05) / Session = 44488 / Exchange = 59530] - [1667201865.294000][13711:13711] CHIP:DMG: Header Flags = - [1667201865.294058][13711:13711] CHIP:DMG: { - [1667201865.294143][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201865.294200][13711:13711] CHIP:DMG: { - [1667201865.294259][13711:13711] CHIP:DMG: AckMsg = 36313486 - [1667201865.294309][13711:13711] CHIP:DMG: NeedsAck = true - [1667201865.294363][13711:13711] CHIP:DMG: } - [1667201865.294434][13711:13711] CHIP:DMG: } - [1667201865.294608][13711:13711] CHIP:DMG: - [1667201865.294684][13711:13711] CHIP:DMG: Encrypted Payload (72 bytes) = - [1667201865.294741][13711:13711] CHIP:DMG: { - [1667201865.294826][13711:13711] CHIP:DMG: data = 00c8ad003e4bc60aaa003d334ac8a713a8935f0dd26e6b86aaefdb84ae9f54b2cafdff5e434dad6c35dbc61fdcbe566ecab25517039e35e8059a06dea64e2173107cae6a87732798 - [1667201865.294889][13711:13711] CHIP:DMG: buffer_ptr = 187651380641136 - [1667201865.294943][13711:13711] CHIP:DMG: } - [1667201865.294989][13711:13711] CHIP:DMG: - [1667201865.295069][13711:13711] CHIP:DMG: Decrypted Payload (38 bytes) = - [1667201865.295148][13711:13711] CHIP:DMG: { - [1667201865.295205][13711:13711] CHIP:DMG: data = 153601153501260000d72c04370124020125030101240426182502f6ff181818290424ff0118 - [1667201865.295262][13711:13711] CHIP:DMG: } - [1667201865.295314][13711:13711] CHIP:DMG: - [1667201865.295484][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201865.295577][13711:13711] CHIP:DMG: { - [1667201865.295633][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201865.295712][13711:13711] CHIP:DMG: [ - [1667201865.295774][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201865.295879][13711:13711] CHIP:DMG: { - [1667201865.295947][13711:13711] CHIP:DMG: AttributeDataIB = - [1667201865.296029][13711:13711] CHIP:DMG: { - [1667201865.296136][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667201865.296223][13711:13711] CHIP:DMG: AttributePathIB = - [1667201865.296302][13711:13711] CHIP:DMG: { - [1667201865.296425][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201865.296532][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201865.296650][13711:13711] CHIP:DMG: Attribute = 0x0000_0026, - [1667201865.296738][13711:13711] CHIP:DMG: } - [1667201865.296828][13711:13711] CHIP:DMG: - [1667201865.296933][13711:13711] CHIP:DMG: Data = 65526, - [1667201865.297016][13711:13711] CHIP:DMG: }, - [1667201865.297126][13711:13711] CHIP:DMG: - [1667201865.297197][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads DefaultConfigurationRegister from the TH." - PICS: DRLK.C.A0027 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read default-configuration-register 1 1 - - Verify the " DefaultConfigurationRegister response" on TH(lock-app): - - [1667201906.379609][13711:13711] CHIP:EM: Handling via exchange: 15468r, Delegate: 0xaaaae6ead988 - [1667201906.379706][13711:13711] CHIP:IM: Received Read request - [1667201906.379909][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201906.380000][13711:13711] CHIP:DMG: { - [1667201906.380048][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201906.380134][13711:13711] CHIP:DMG: [ - [1667201906.380189][13711:13711] CHIP:DMG: AttributePathIB = - [1667201906.380260][13711:13711] CHIP:DMG: { - [1667201906.380340][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201906.380439][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201906.380522][13711:13711] CHIP:DMG: Attribute = 0x0000_0027, - [1667201906.380600][13711:13711] CHIP:DMG: } - [1667201906.380694][13711:13711] CHIP:DMG: - [1667201906.380768][13711:13711] CHIP:DMG: ], - [1667201906.380839][13711:13711] CHIP:DMG: - [1667201906.380906][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201906.380997][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201906.381059][13711:13711] CHIP:DMG: }, - [1667201906.381229][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201906.381484][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201906.381556][13711:13711] CHIP:DMG: Cluster 101, Attribute 27 is dirty - [1667201906.381612][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0027 (expanded=0) - [1667201906.381744][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667201906.382358][13711:13711] CHIP:EM: <<< [E:15468r M:146241971 (Ack:193313389)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201906.382501][13711:13711] CHIP:IN: (S) Sending msg 146241971 on secure session with LSID: 52154 - [1667201906.383231][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:48001 | 146241971 | [Interaction Model (1) / Report Data (0x05) / Session = 1655 / Exchange = 15468] - [1667201906.383330][13711:13711] CHIP:DMG: Header Flags = - [1667201906.383388][13711:13711] CHIP:DMG: { - [1667201906.383474][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201906.383530][13711:13711] CHIP:DMG: { - [1667201906.383588][13711:13711] CHIP:DMG: AckMsg = 193313389 - [1667201906.383642][13711:13711] CHIP:DMG: NeedsAck = true - [1667201906.383697][13711:13711] CHIP:DMG: } - [1667201906.383768][13711:13711] CHIP:DMG: } - [1667201906.383823][13711:13711] CHIP:DMG: - [1667201906.383918][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667201906.383974][13711:13711] CHIP:DMG: { - [1667201906.384028][13711:13711] CHIP:DMG: data = 00770600b379b708561edb1ca212a6ed6e753f301ab7c10edb0c5ba32d88ca8a7eaa3c1d345822e423f12fa0e8d532a3ba9997d58a2ce3a3ef98e7613ffafff64b989f6f - [1667201906.384108][13711:13711] CHIP:DMG: buffer_ptr = 187651380641680 - [1667201906.384164][13711:13711] CHIP:DMG: } - [1667201906.384216][13711:13711] CHIP:DMG: - [1667201906.384313][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667201906.384372][13711:13711] CHIP:DMG: { - [1667201906.384426][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124042718350124008618181818290424ff0118 - [1667201906.384503][13711:13711] CHIP:DMG: } - [1667201906.384554][13711:13711] CHIP:DMG: - [1667201906.384718][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201906.384777][13711:13711] CHIP:DMG: { - [1667201906.384832][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201906.384935][13711:13711] CHIP:DMG: [ - [1667201906.384998][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201906.385108][13711:13711] CHIP:DMG: { - [1667201906.385177][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667201906.385277][13711:13711] CHIP:DMG: { - [1667201906.385351][13711:13711] CHIP:DMG: AttributePathIB = - [1667201906.385456][13711:13711] CHIP:DMG: { - [1667201906.385540][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201906.385653][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201906.385740][13711:13711] CHIP:DMG: Attribute = 0x0000_0027, - [1667201906.385846][13711:13711] CHIP:DMG: } - [1667201906.385937][13711:13711] CHIP:DMG: - [1667201906.386035][13711:13711] CHIP:DMG: StatusIB = - [1667201906.386117][13711:13711] CHIP:DMG: { - [1667201906.386218][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667201906.386293][13711:13711] CHIP:DMG: }, - [1667201906.386598][13711:13711] CHIP:DMG: - [1667201906.386674][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads EnableLocalProgramming from the TH." - PICS: DRLK.C.A0028 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read enable-local-programming 1 1 - Verify the " EnableLocalProgramming response" on TH(lock-app): - - [1667201986.822227][13711:13711] CHIP:EM: Handling via exchange: 57576r, Delegate: 0xaaaae6ead988 - [1667201986.822328][13711:13711] CHIP:IM: Received Read request - [1667201986.822565][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667201986.822645][13711:13711] CHIP:DMG: { - [1667201986.822704][13711:13711] CHIP:DMG: AttributePathIBs = - [1667201986.822817][13711:13711] CHIP:DMG: [ - [1667201986.822882][13711:13711] CHIP:DMG: AttributePathIB = - [1667201986.822964][13711:13711] CHIP:DMG: { - [1667201986.823064][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201986.823161][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201986.823254][13711:13711] CHIP:DMG: Attribute = 0x0000_0028, - [1667201986.823341][13711:13711] CHIP:DMG: } - [1667201986.823414][13711:13711] CHIP:DMG: - [1667201986.823487][13711:13711] CHIP:DMG: ], - [1667201986.823560][13711:13711] CHIP:DMG: - [1667201986.823630][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667201986.823697][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667201986.823760][13711:13711] CHIP:DMG: }, - [1667201986.823927][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667201986.824182][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667201986.824264][13711:13711] CHIP:DMG: Cluster 101, Attribute 28 is dirty - [1667201986.824355][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0028 (expanded=0) - [1667201986.824469][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667201986.825131][13711:13711] CHIP:EM: <<< [E:57576r M:231464441 (Ack:185766771)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667201986.825270][13711:13711] CHIP:IN: (S) Sending msg 231464441 on secure session with LSID: 52155 - [1667201986.826031][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be36%eth0]:41023 | 231464441 | [Interaction Model (1) / Report Data (0x05) / Session = 47580 / Exchange = 57576] - [1667201986.826137][13711:13711] CHIP:DMG: Header Flags = - [1667201986.826196][13711:13711] CHIP:DMG: { - [1667201986.826282][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667201986.826335][13711:13711] CHIP:DMG: { - [1667201986.826399][13711:13711] CHIP:DMG: AckMsg = 185766771 - [1667201986.826489][13711:13711] CHIP:DMG: NeedsAck = true - [1667201986.826556][13711:13711] CHIP:DMG: } - [1667201986.826641][13711:13711] CHIP:DMG: } - [1667201986.826690][13711:13711] CHIP:DMG: - [1667201986.826764][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667201986.826814][13711:13711] CHIP:DMG: { - [1667201986.826871][13711:13711] CHIP:DMG: data = 00dcb900f9ddcb0dcd0c7201c424c330e0998b17c9ac64dee9ea17a8392ff87a0d50da9bae8f63b21c6821767e57af145f01fa090db2f69eef832eaba08fda839310a81d - [1667201986.826924][13711:13711] CHIP:DMG: buffer_ptr = 187651380641984 - [1667201986.826979][13711:13711] CHIP:DMG: } - [1667201986.827035][13711:13711] CHIP:DMG: - [1667201986.827113][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667201986.827171][13711:13711] CHIP:DMG: { - [1667201986.827228][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124042818350124008618181818290424ff0118 - [1667201986.827286][13711:13711] CHIP:DMG: } - [1667201986.827341][13711:13711] CHIP:DMG: - [1667201986.827484][13711:13711] CHIP:DMG: ReportDataMessage = - [1667201986.827546][13711:13711] CHIP:DMG: { - [1667201986.827603][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667201986.827690][13711:13711] CHIP:DMG: [ - [1667201986.827749][13711:13711] CHIP:DMG: AttributeReportIB = - [1667201986.827840][13711:13711] CHIP:DMG: { - [1667201986.827916][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667201986.827986][13711:13711] CHIP:DMG: { - [1667201986.828073][13711:13711] CHIP:DMG: AttributePathIB = - [1667201986.828168][13711:13711] CHIP:DMG: { - [1667201986.828262][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667201986.828344][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667201986.828444][13711:13711] CHIP:DMG: Attribute = 0x0000_0028, - [1667201986.828520][13711:13711] CHIP:DMG: } - [1667201986.828629][13711:13711] CHIP:DMG: - [1667201986.828724][13711:13711] CHIP:DMG: StatusIB = - [1667201986.828821][13711:13711] CHIP:DMG: { - [1667201986.828937][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667201986.829037][13711:13711] CHIP:DMG: }, - [1667201986.829134][13711:13711] CHIP:DMG: - [1667201986.829203][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads EnableOneTouchLocking from the TH." - PICS: DRLK.C.A0029 - verification: | - ./chip-tool doorlock read enable-one-touch-locking 1 1 - - - Verify the " EnableOneTouchLocking response" on TH(lock-app): - - [1667202085.220780][13711:13711] CHIP:EM: Handling via exchange: 3571r, Delegate: 0xaaaae6ead988 - [1667202085.220880][13711:13711] CHIP:IM: Received Read request - [1667202085.221091][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202085.221161][13711:13711] CHIP:DMG: { - [1667202085.221212][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202085.221275][13711:13711] CHIP:DMG: [ - [1667202085.221337][13711:13711] CHIP:DMG: AttributePathIB = - [1667202085.221416][13711:13711] CHIP:DMG: { - [1667202085.221494][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202085.221568][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202085.221660][13711:13711] CHIP:DMG: Attribute = 0x0000_0029, - [1667202085.221745][13711:13711] CHIP:DMG: } - [1667202085.221823][13711:13711] CHIP:DMG: - [1667202085.221889][13711:13711] CHIP:DMG: ], - [1667202085.221960][13711:13711] CHIP:DMG: - [1667202085.222034][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202085.222099][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202085.222162][13711:13711] CHIP:DMG: }, - [1667202085.222325][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202085.222709][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202085.222797][13711:13711] CHIP:DMG: Cluster 101, Attribute 29 is dirty - [1667202085.222852][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0029 (expanded=0) - [1667202085.222926][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667202085.223003][13711:13711] CHIP:DMG: AccessControl: allowed - [1667202085.223118][13711:13711] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667202085.223747][13711:13711] CHIP:EM: <<< [E:3571r M:103713831 (Ack:123384275)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202085.223852][13711:13711] CHIP:IN: (S) Sending msg 103713831 on secure session with LSID: 52156 - [1667202085.224618][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:59194 | 103713831 | [Interaction Model (1) / Report Data (0x05) / Session = 50900 / Exchange = 3571] - [1667202085.224725][13711:13711] CHIP:DMG: Header Flags = - [1667202085.224784][13711:13711] CHIP:DMG: { - [1667202085.224872][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202085.224929][13711:13711] CHIP:DMG: { - [1667202085.224989][13711:13711] CHIP:DMG: AckMsg = 123384275 - [1667202085.225042][13711:13711] CHIP:DMG: NeedsAck = true - [1667202085.225096][13711:13711] CHIP:DMG: } - [1667202085.225164][13711:13711] CHIP:DMG: } - [1667202085.225220][13711:13711] CHIP:DMG: - [1667202085.225295][13711:13711] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667202085.225353][13711:13711] CHIP:DMG: { - [1667202085.225408][13711:13711] CHIP:DMG: data = 00d4c600278c2e0695b1912102662b1e0e661d5dc539bb4f83c31648198caa8d802d0f9f1ed0de2053be3c4603c3403f04940e1352afee6b5d992020ae5718febd613b3f5ea1 - [1667202085.225466][13711:13711] CHIP:DMG: buffer_ptr = 187651380642896 - [1667202085.225521][13711:13711] CHIP:DMG: } - [1667202085.225573][13711:13711] CHIP:DMG: - [1667202085.225644][13711:13711] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667202085.225700][13711:13711] CHIP:DMG: { - [1667202085.225754][13711:13711] CHIP:DMG: data = 153601153501260000d72c04370124020125030101240429182802181818290424ff0118 - [1667202085.225809][13711:13711] CHIP:DMG: } - [1667202085.225862][13711:13711] CHIP:DMG: - [1667202085.226017][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202085.226086][13711:13711] CHIP:DMG: { - [1667202085.226139][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202085.226224][13711:13711] CHIP:DMG: [ - [1667202085.226287][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202085.226388][13711:13711] CHIP:DMG: { - [1667202085.226528][13711:13711] CHIP:DMG: AttributeDataIB = - [1667202085.226613][13711:13711] CHIP:DMG: { - [1667202085.226708][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667202085.226788][13711:13711] CHIP:DMG: AttributePathIB = - [1667202085.226868][13711:13711] CHIP:DMG: { - [1667202085.226965][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202085.227067][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202085.227168][13711:13711] CHIP:DMG: Attribute = 0x0000_0029, - [1667202085.227264][13711:13711] CHIP:DMG: } - [1667202085.227343][13711:13711] CHIP:DMG: - [1667202085.227431][13711:13711] CHIP:DMG: Data = false, - [1667202085.227498][13711:13711] CHIP:DMG: }, - [1667202085.227606][13711:13711] CHIP:DMG: - [1667202085.227681][13711:13711] CHIP:DMG: }, - [1667202085.227766][13711:13711] CHIP:DMG: - disabled: true - - - label: "DUT reads EnableInsideStatusLED from the TH." - PICS: DRLK.C.A002a - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read enable-inside-status-led 1 1 - - Verify the " EnableInsideStatusLED response" on TH(lock-app): - - [1667202139.292684][13711:13711] CHIP:EM: Handling via exchange: 16438r, Delegate: 0xaaaae6ead988 - [1667202139.292784][13711:13711] CHIP:IM: Received Read request - [1667202139.292982][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202139.293075][13711:13711] CHIP:DMG: { - [1667202139.293132][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202139.293200][13711:13711] CHIP:DMG: [ - [1667202139.293284][13711:13711] CHIP:DMG: AttributePathIB = - [1667202139.293349][13711:13711] CHIP:DMG: { - [1667202139.293442][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202139.293530][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202139.293634][13711:13711] CHIP:DMG: Attribute = 0x0000_002A, - [1667202139.293709][13711:13711] CHIP:DMG: } - [1667202139.293788][13711:13711] CHIP:DMG: - [1667202139.293862][13711:13711] CHIP:DMG: ], - [1667202139.293963][13711:13711] CHIP:DMG: - [1667202139.294031][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202139.294117][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202139.294179][13711:13711] CHIP:DMG: }, - [1667202139.294365][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202139.294733][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202139.294811][13711:13711] CHIP:DMG: Cluster 101, Attribute 2a is dirty - [1667202139.294868][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_002A (expanded=0) - [1667202139.295011][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667202139.295600][13711:13711] CHIP:EM: <<< [E:16438r M:93465367 (Ack:141442653)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202139.295708][13711:13711] CHIP:IN: (S) Sending msg 93465367 on secure session with LSID: 52157 - [1667202139.296392][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:37922 | 93465367 | [Interaction Model (1) / Report Data (0x05) / Session = 26277 / Exchange = 16438] - [1667202139.296498][13711:13711] CHIP:DMG: Header Flags = - [1667202139.296556][13711:13711] CHIP:DMG: { - [1667202139.296642][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202139.296699][13711:13711] CHIP:DMG: { - [1667202139.296760][13711:13711] CHIP:DMG: AckMsg = 141442653 - [1667202139.296816][13711:13711] CHIP:DMG: NeedsAck = true - [1667202139.296872][13711:13711] CHIP:DMG: } - [1667202139.296946][13711:13711] CHIP:DMG: } - [1667202139.297002][13711:13711] CHIP:DMG: - [1667202139.297074][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667202139.297130][13711:13711] CHIP:DMG: { - [1667202139.297184][13711:13711] CHIP:DMG: data = 00a56600172b92057c6ad77a91751fe36812c6813203c4cd3cf65fe1bbf95528459ebda6c385deae8832e8d82ada1b957804294b12e4661418ba72a78255e810d4df9c29 - [1667202139.297243][13711:13711] CHIP:DMG: buffer_ptr = 187651380643392 - [1667202139.297296][13711:13711] CHIP:DMG: } - [1667202139.297348][13711:13711] CHIP:DMG: - [1667202139.297421][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667202139.297477][13711:13711] CHIP:DMG: { - [1667202139.297532][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124042a18350124008618181818290424ff0118 - [1667202139.297593][13711:13711] CHIP:DMG: } - [1667202139.297647][13711:13711] CHIP:DMG: - [1667202139.297790][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202139.297855][13711:13711] CHIP:DMG: { - [1667202139.297906][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202139.297983][13711:13711] CHIP:DMG: [ - [1667202139.298046][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202139.298129][13711:13711] CHIP:DMG: { - [1667202139.298192][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667202139.298276][13711:13711] CHIP:DMG: { - [1667202139.298353][13711:13711] CHIP:DMG: AttributePathIB = - [1667202139.298443][13711:13711] CHIP:DMG: { - [1667202139.298595][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202139.298686][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202139.298776][13711:13711] CHIP:DMG: Attribute = 0x0000_002A, - [1667202139.298903][13711:13711] CHIP:DMG: } - [1667202139.299005][13711:13711] CHIP:DMG: - [1667202139.299089][13711:13711] CHIP:DMG: StatusIB = - [1667202139.299171][13711:13711] CHIP:DMG: { - [1667202139.299258][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667202139.299344][13711:13711] CHIP:DMG: }, - [1667202139.299431][13711:13711] CHIP:DMG: - [1667202139.299511][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads EnablePrivacyModeButton from the TH." - PICS: DRLK.C.A002b - verification: | - ./chip-tool doorlock read enable-privacy-mode-button 1 1 - - Verify the " EnablePrivacyModeButton response" on TH(lock-app): - - [1667202190.271009][13711:13711] CHIP:EM: Handling via exchange: 22349r, Delegate: 0xaaaae6ead988 - [1667202190.271128][13711:13711] CHIP:IM: Received Read request - [1667202190.271320][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202190.271380][13711:13711] CHIP:DMG: { - [1667202190.271459][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202190.271528][13711:13711] CHIP:DMG: [ - [1667202190.271589][13711:13711] CHIP:DMG: AttributePathIB = - [1667202190.271685][13711:13711] CHIP:DMG: { - [1667202190.271762][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202190.271837][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202190.271952][13711:13711] CHIP:DMG: Attribute = 0x0000_002B, - [1667202190.272039][13711:13711] CHIP:DMG: } - [1667202190.272139][13711:13711] CHIP:DMG: - [1667202190.272214][13711:13711] CHIP:DMG: ], - [1667202190.272287][13711:13711] CHIP:DMG: - [1667202190.272376][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202190.272442][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202190.272497][13711:13711] CHIP:DMG: }, - [1667202190.272683][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202190.272927][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202190.273022][13711:13711] CHIP:DMG: Cluster 101, Attribute 2b is dirty - [1667202190.273077][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_002B (expanded=0) - [1667202190.273144][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667202190.273247][13711:13711] CHIP:DMG: AccessControl: allowed - [1667202190.273363][13711:13711] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667202190.273981][13711:13711] CHIP:EM: <<< [E:22349r M:227279464 (Ack:207024562)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202190.274079][13711:13711] CHIP:IN: (S) Sending msg 227279464 on secure session with LSID: 52158 - [1667202190.274946][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:47366 | 227279464 | [Interaction Model (1) / Report Data (0x05) / Session = 3496 / Exchange = 22349] - [1667202190.275045][13711:13711] CHIP:DMG: Header Flags = - [1667202190.275103][13711:13711] CHIP:DMG: { - [1667202190.275189][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202190.275245][13711:13711] CHIP:DMG: { - [1667202190.275305][13711:13711] CHIP:DMG: AckMsg = 207024562 - [1667202190.275362][13711:13711] CHIP:DMG: NeedsAck = true - [1667202190.275417][13711:13711] CHIP:DMG: } - [1667202190.275488][13711:13711] CHIP:DMG: } - [1667202190.275537][13711:13711] CHIP:DMG: - [1667202190.275606][13711:13711] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667202190.275687][13711:13711] CHIP:DMG: { - [1667202190.275741][13711:13711] CHIP:DMG: data = 00a80d0068028c0dae945e82ec6050ee2dc979f52a77b9867d118938dc92726a043781612c8c6ee23c0091712b99c32ec077cd3fd630a23fdc472e4736a2278bee6665d183c6 - [1667202190.275823][13711:13711] CHIP:DMG: buffer_ptr = 187651380641984 - [1667202190.275879][13711:13711] CHIP:DMG: } - [1667202190.275932][13711:13711] CHIP:DMG: - [1667202190.276031][13711:13711] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667202190.276089][13711:13711] CHIP:DMG: { - [1667202190.276148][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124042b182802181818290424ff0118 - [1667202190.276225][13711:13711] CHIP:DMG: } - [1667202190.276279][13711:13711] CHIP:DMG: - [1667202190.276451][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202190.276694][13711:13711] CHIP:DMG: { - [1667202190.276774][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202190.276850][13711:13711] CHIP:DMG: [ - [1667202190.276913][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202190.277035][13711:13711] CHIP:DMG: { - [1667202190.277120][13711:13711] CHIP:DMG: AttributeDataIB = - [1667202190.277226][13711:13711] CHIP:DMG: { - [1667202190.277320][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667202190.277427][13711:13711] CHIP:DMG: AttributePathIB = - [1667202190.277502][13711:13711] CHIP:DMG: { - [1667202190.277607][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202190.277707][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202190.277807][13711:13711] CHIP:DMG: Attribute = 0x0000_002B, - [1667202190.277920][13711:13711] CHIP:DMG: } - [1667202190.278023][13711:13711] CHIP:DMG: - [1667202190.278123][13711:13711] CHIP:DMG: Data = false, - [1667202190.278230][13711:13711] CHIP:DMG: }, - [1667202190.278306][13711:13711] CHIP:DMG: - [1667202190.278385][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads LocalProgrammingFeatures from the TH." - PICS: DRLK.C.A002c - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read local-programming-features 1 1 - - Verify the " LocalProgrammingFeatures response" on TH(lock-app): - - [1667202241.815819][13711:13711] CHIP:EM: Handling via exchange: 44375r, Delegate: 0xaaaae6ead988 - [1667202241.815941][13711:13711] CHIP:IM: Received Read request - [1667202241.816141][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202241.816232][13711:13711] CHIP:DMG: { - [1667202241.816289][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202241.816355][13711:13711] CHIP:DMG: [ - [1667202241.816441][13711:13711] CHIP:DMG: AttributePathIB = - [1667202241.816523][13711:13711] CHIP:DMG: { - [1667202241.816624][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202241.816699][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202241.816792][13711:13711] CHIP:DMG: Attribute = 0x0000_002C, - [1667202241.816869][13711:13711] CHIP:DMG: } - [1667202241.816949][13711:13711] CHIP:DMG: - [1667202241.817035][13711:13711] CHIP:DMG: ], - [1667202241.817109][13711:13711] CHIP:DMG: - [1667202241.817176][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202241.817262][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202241.817322][13711:13711] CHIP:DMG: }, - [1667202241.817513][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202241.817794][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202241.817866][13711:13711] CHIP:DMG: Cluster 101, Attribute 2c is dirty - [1667202241.817921][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_002C (expanded=0) - [1667202241.818052][13711:13711] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667202241.818726][13711:13711] CHIP:EM: <<< [E:44375r M:38114794 (Ack:242909907)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202241.818827][13711:13711] CHIP:IN: (S) Sending msg 38114794 on secure session with LSID: 52159 - [1667202241.819528][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:41075 | 38114794 | [Interaction Model (1) / Report Data (0x05) / Session = 5707 / Exchange = 44375] - [1667202241.819627][13711:13711] CHIP:DMG: Header Flags = - [1667202241.819684][13711:13711] CHIP:DMG: { - [1667202241.819770][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202241.819826][13711:13711] CHIP:DMG: { - [1667202241.819892][13711:13711] CHIP:DMG: AckMsg = 242909907 - [1667202241.819948][13711:13711] CHIP:DMG: NeedsAck = true - [1667202241.820005][13711:13711] CHIP:DMG: } - [1667202241.820077][13711:13711] CHIP:DMG: } - [1667202241.820129][13711:13711] CHIP:DMG: - [1667202241.820198][13711:13711] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667202241.820254][13711:13711] CHIP:DMG: { - [1667202241.820334][13711:13711] CHIP:DMG: data = 004b1600ea954502866308912e5958d6c118bc09959ae353ec7821c2a8d5b36e7e06f8bb31096ffe388cd36baa631168bd408826eebcf80682523d71920816b7a034eea2 - [1667202241.820393][13711:13711] CHIP:DMG: buffer_ptr = 187651380645088 - [1667202241.820441][13711:13711] CHIP:DMG: } - [1667202241.820517][13711:13711] CHIP:DMG: - [1667202241.820593][13711:13711] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667202241.820650][13711:13711] CHIP:DMG: { - [1667202241.820720][13711:13711] CHIP:DMG: data = 15360115350037002402012503010124042c18350124008618181818290424ff0118 - [1667202241.820777][13711:13711] CHIP:DMG: } - [1667202241.820830][13711:13711] CHIP:DMG: - [1667202241.820994][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202241.821052][13711:13711] CHIP:DMG: { - [1667202241.821128][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202241.821206][13711:13711] CHIP:DMG: [ - [1667202241.821285][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202241.821378][13711:13711] CHIP:DMG: { - [1667202241.821474][13711:13711] CHIP:DMG: AttributeStatusIB = - [1667202241.821568][13711:13711] CHIP:DMG: { - [1667202241.821677][13711:13711] CHIP:DMG: AttributePathIB = - [1667202241.821773][13711:13711] CHIP:DMG: { - [1667202241.821890][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202241.821994][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202241.822108][13711:13711] CHIP:DMG: Attribute = 0x0000_002C, - [1667202241.822206][13711:13711] CHIP:DMG: } - [1667202241.822336][13711:13711] CHIP:DMG: - [1667202241.822454][13711:13711] CHIP:DMG: StatusIB = - [1667202241.822596][13711:13711] CHIP:DMG: { - [1667202241.822713][13711:13711] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667202241.822810][13711:13711] CHIP:DMG: }, - [1667202241.822930][13711:13711] CHIP:DMG: - [1667202241.823038][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads WrongCodeEntryLimit from the TH." - PICS: DRLK.C.F00 || DRLK.C.F01 && DRLK.C.A0030 - verification: | - ./chip-tool doorlock read wrong-code-entry-limit 1 1 - - Verify the " WrongCodeEntryLimit response" on TH(lock-app): - - [1667202274.486723][13711:13711] CHIP:EM: Handling via exchange: 36448r, Delegate: 0xaaaae6ead988 - [1667202274.486826][13711:13711] CHIP:IM: Received Read request - [1667202274.487004][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202274.487071][13711:13711] CHIP:DMG: { - [1667202274.487125][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202274.487191][13711:13711] CHIP:DMG: [ - [1667202274.487253][13711:13711] CHIP:DMG: AttributePathIB = - [1667202274.487316][13711:13711] CHIP:DMG: { - [1667202274.487395][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202274.487488][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202274.487557][13711:13711] CHIP:DMG: Attribute = 0x0000_0030, - [1667202274.487641][13711:13711] CHIP:DMG: } - [1667202274.487719][13711:13711] CHIP:DMG: - [1667202274.487778][13711:13711] CHIP:DMG: ], - [1667202274.487849][13711:13711] CHIP:DMG: - [1667202274.487915][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202274.487987][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202274.488054][13711:13711] CHIP:DMG: }, - [1667202274.488221][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202274.488464][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202274.488539][13711:13711] CHIP:DMG: Cluster 101, Attribute 30 is dirty - [1667202274.488595][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0030 (expanded=0) - [1667202274.488665][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667202274.488743][13711:13711] CHIP:DMG: AccessControl: allowed - [1667202274.488862][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667202274.489461][13711:13711] CHIP:EM: <<< [E:36448r M:34747054 (Ack:50219269)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202274.489569][13711:13711] CHIP:IN: (S) Sending msg 34747054 on secure session with LSID: 52160 - [1667202274.490287][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:44304 | 34747054 | [Interaction Model (1) / Report Data (0x05) / Session = 39484 / Exchange = 36448] - [1667202274.490392][13711:13711] CHIP:DMG: Header Flags = - [1667202274.490450][13711:13711] CHIP:DMG: { - [1667202274.490596][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202274.490652][13711:13711] CHIP:DMG: { - [1667202274.490712][13711:13711] CHIP:DMG: AckMsg = 50219269 - [1667202274.490770][13711:13711] CHIP:DMG: NeedsAck = true - [1667202274.490822][13711:13711] CHIP:DMG: } - [1667202274.490894][13711:13711] CHIP:DMG: } - [1667202274.490949][13711:13711] CHIP:DMG: - [1667202274.491022][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667202274.491078][13711:13711] CHIP:DMG: { - [1667202274.491132][13711:13711] CHIP:DMG: data = 003c9a00ae3212021a33dd259c3aad5f4b6d17b2cc4214b778b700ebfc660948088f265c3bc04dfdfacc445f080cf4a0698b003482266678a8a5ec4307e46f3ff14595f68bf66a - [1667202274.491191][13711:13711] CHIP:DMG: buffer_ptr = 187651380644032 - [1667202274.491239][13711:13711] CHIP:DMG: } - [1667202274.491292][13711:13711] CHIP:DMG: - [1667202274.491367][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667202274.491423][13711:13711] CHIP:DMG: { - [1667202274.491476][13711:13711] CHIP:DMG: data = 153601153501260000d72c0437012402012503010124043018240203181818290424ff0118 - [1667202274.491532][13711:13711] CHIP:DMG: } - [1667202274.491604][13711:13711] CHIP:DMG: - [1667202274.491768][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202274.491832][13711:13711] CHIP:DMG: { - [1667202274.491887][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202274.491973][13711:13711] CHIP:DMG: [ - [1667202274.492035][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202274.492122][13711:13711] CHIP:DMG: { - [1667202274.492198][13711:13711] CHIP:DMG: AttributeDataIB = - [1667202274.492288][13711:13711] CHIP:DMG: { - [1667202274.492377][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667202274.492468][13711:13711] CHIP:DMG: AttributePathIB = - [1667202274.492564][13711:13711] CHIP:DMG: { - [1667202274.492642][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202274.492740][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202274.492840][13711:13711] CHIP:DMG: Attribute = 0x0000_0030, - [1667202274.492935][13711:13711] CHIP:DMG: } - [1667202274.493034][13711:13711] CHIP:DMG: - [1667202274.493133][13711:13711] CHIP:DMG: Data = 3, - [1667202274.493198][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads UserCodedTemporaryDisableTime from the TH." - PICS: DRLK.C.F00 || DRLK.C.F01 && DRLK.C.A0031 - verification: | - ./chip-tool doorlock read user-code-temporary-disable-time 1 1 - - Verify the " UserCodedTemporaryDisableTime response" on TH(lock-app): - - [1667202354.904139][13711:13711] CHIP:EM: Handling via exchange: 3909r, Delegate: 0xaaaae6ead988 - [1667202354.904251][13711:13711] CHIP:IM: Received Read request - [1667202354.904434][13711:13711] CHIP:DMG: ReadRequestMessage = - [1667202354.904500][13711:13711] CHIP:DMG: { - [1667202354.904555][13711:13711] CHIP:DMG: AttributePathIBs = - [1667202354.904622][13711:13711] CHIP:DMG: [ - [1667202354.904683][13711:13711] CHIP:DMG: AttributePathIB = - [1667202354.904761][13711:13711] CHIP:DMG: { - [1667202354.904826][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202354.904908][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202354.904993][13711:13711] CHIP:DMG: Attribute = 0x0000_0031, - [1667202354.905070][13711:13711] CHIP:DMG: } - [1667202354.905147][13711:13711] CHIP:DMG: - [1667202354.905207][13711:13711] CHIP:DMG: ], - [1667202354.905278][13711:13711] CHIP:DMG: - [1667202354.905343][13711:13711] CHIP:DMG: isFabricFiltered = true, - [1667202354.905406][13711:13711] CHIP:DMG: InteractionModelRevision = 1 - [1667202354.905466][13711:13711] CHIP:DMG: }, - [1667202354.905630][13711:13711] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667202354.905859][13711:13711] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667202354.905933][13711:13711] CHIP:DMG: Cluster 101, Attribute 31 is dirty - [1667202354.905982][13711:13711] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0031 (expanded=0) - [1667202354.906051][13711:13711] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667202354.906127][13711:13711] CHIP:DMG: AccessControl: allowed - [1667202354.906244][13711:13711] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667202354.906881][13711:13711] CHIP:EM: <<< [E:3909r M:118350596 (Ack:44773929)] (S) Msg TX to 1:000000000001B669 [842E] --- Type 0001:05 (IM:ReportData) - [1667202354.906985][13711:13711] CHIP:IN: (S) Sending msg 118350596 on secure session with LSID: 52161 - [1667202354.907678][13711:13711] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:50749 | 118350596 | [Interaction Model (1) / Report Data (0x05) / Session = 18999 / Exchange = 3909] - [1667202354.907776][13711:13711] CHIP:DMG: Header Flags = - [1667202354.907833][13711:13711] CHIP:DMG: { - [1667202354.907918][13711:13711] CHIP:DMG: Exchange (0x06) = - [1667202354.907974][13711:13711] CHIP:DMG: { - [1667202354.908034][13711:13711] CHIP:DMG: AckMsg = 44773929 - [1667202354.908093][13711:13711] CHIP:DMG: NeedsAck = true - [1667202354.908147][13711:13711] CHIP:DMG: } - [1667202354.908218][13711:13711] CHIP:DMG: } - [1667202354.908275][13711:13711] CHIP:DMG: - [1667202354.908343][13711:13711] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667202354.908399][13711:13711] CHIP:DMG: { - [1667202354.908453][13711:13711] CHIP:DMG: data = 00374a0004e30d0700ecba58e4f0017b4f153bac244b413c5c94656f9fd4d3aa1e6c0ea46dcb8822e514c66c0f390944ce7557a1e3906b9c7a38539a0dcbd9d0f8632e9eda1fc4 - [1667202354.908511][13711:13711] CHIP:DMG: buffer_ptr = 187651380646272 - [1667202354.908559][13711:13711] CHIP:DMG: } - [1667202354.908603][13711:13711] CHIP:DMG: - [1667202354.908670][13711:13711] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667202354.908718][13711:13711] CHIP:DMG: { - [1667202354.908772][13711:13711] CHIP:DMG: data = 153601153501260000d72c043701240201250301012404311824020a181818290424ff0118 - [1667202354.908827][13711:13711] CHIP:DMG: } - [1667202354.908880][13711:13711] CHIP:DMG: - [1667202354.909029][13711:13711] CHIP:DMG: ReportDataMessage = - [1667202354.909095][13711:13711] CHIP:DMG: { - [1667202354.909150][13711:13711] CHIP:DMG: AttributeReportIBs = - [1667202354.909235][13711:13711] CHIP:DMG: [ - [1667202354.909299][13711:13711] CHIP:DMG: AttributeReportIB = - [1667202354.909387][13711:13711] CHIP:DMG: { - [1667202354.909447][13711:13711] CHIP:DMG: AttributeDataIB = - [1667202354.909535][13711:13711] CHIP:DMG: { - [1667202354.909627][13711:13711] CHIP:DMG: DataVersion = 0x42cd700, - [1667202354.909698][13711:13711] CHIP:DMG: AttributePathIB = - [1667202354.909791][13711:13711] CHIP:DMG: { - [1667202354.909887][13711:13711] CHIP:DMG: Endpoint = 0x1, - [1667202354.909964][13711:13711] CHIP:DMG: Cluster = 0x101, - [1667202354.910062][13711:13711] CHIP:DMG: Attribute = 0x0000_0031, - [1667202354.910157][13711:13711] CHIP:DMG: } - [1667202354.910234][13711:13711] CHIP:DMG: - [1667202354.910331][13711:13711] CHIP:DMG: Data = 10, - [1667202354.910421][13711:13711] CHIP:DMG: }, - [1667202354.910528][13711:13711] CHIP:DMG: - [1667202354.910594][13711:13711] CHIP:DMG: }, - disabled: true - - - label: "DUT reads SendPINOverTheAir from the TH." - PICS: DRLK.C.F00 && DRLK.C.A0032 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read send-pinover-the-air 1 1 - - Verify the " SendPINOverTheAir response" on TH(lock-app): - - [1667210903.508272][14571:14571] CHIP:EM: Handling via exchange: 62732r, Delegate: 0xaaaae921d988 - [1667210903.508390][14571:14571] CHIP:IM: Received Read request - [1667210903.508591][14571:14571] CHIP:DMG: ReadRequestMessage = - [1667210903.508659][14571:14571] CHIP:DMG: { - [1667210903.508736][14571:14571] CHIP:DMG: AttributePathIBs = - [1667210903.508802][14571:14571] CHIP:DMG: [ - [1667210903.508864][14571:14571] CHIP:DMG: AttributePathIB = - [1667210903.509130][14571:14571] CHIP:DMG: { - [1667210903.509209][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667210903.509313][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667210903.509396][14571:14571] CHIP:DMG: Attribute = 0x0000_0032, - [1667210903.509473][14571:14571] CHIP:DMG: } - [1667210903.509573][14571:14571] CHIP:DMG: - [1667210903.509644][14571:14571] CHIP:DMG: ], - [1667210903.509738][14571:14571] CHIP:DMG: - [1667210903.509807][14571:14571] CHIP:DMG: isFabricFiltered = true, - [1667210903.509871][14571:14571] CHIP:DMG: InteractionModelRevision = 1 - [1667210903.509958][14571:14571] CHIP:DMG: }, - [1667210903.510149][14571:14571] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667210903.510394][14571:14571] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667210903.510560][14571:14571] CHIP:DMG: Cluster 101, Attribute 32 is dirty - [1667210903.510621][14571:14571] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0032 (expanded=0) - [1667210903.510752][14571:14571] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667210903.511338][14571:14571] CHIP:EM: <<< [E:62732r M:115853062 (Ack:62263695)] (S) Msg TX to 1:000000000001B669 [673E] --- Type 0001:05 (IM:ReportData) - [1667210903.511436][14571:14571] CHIP:IN: (S) Sending msg 115853062 on secure session with LSID: 42462 - [1667210903.512281][14571:14571] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:36035 | 115853062 | [Interaction Model (1) / Report Data (0x05) / Session = 25945 / Exchange = 62732] - [1667210903.512384][14571:14571] CHIP:DMG: Header Flags = - [1667210903.512441][14571:14571] CHIP:DMG: { - [1667210903.512527][14571:14571] CHIP:DMG: Exchange (0x06) = - [1667210903.512583][14571:14571] CHIP:DMG: { - [1667210903.512644][14571:14571] CHIP:DMG: AckMsg = 62263695 - [1667210903.512729][14571:14571] CHIP:DMG: NeedsAck = true - [1667210903.512784][14571:14571] CHIP:DMG: } - [1667210903.512858][14571:14571] CHIP:DMG: } - [1667210903.512937][14571:14571] CHIP:DMG: - [1667210903.513005][14571:14571] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667210903.513061][14571:14571] CHIP:DMG: { - [1667210903.513140][14571:14571] CHIP:DMG: data = 0059650006c7e70670e12d95f664d936cdafa7dc091b2c89c834af0929ee69cd1bee0ee2803c9813f553b49a2aa80c73ab2bc2c10fe67279dc088cd7d273c684f3b06860 - [1667210903.513199][14571:14571] CHIP:DMG: buffer_ptr = 187651867774176 - [1667210903.513253][14571:14571] CHIP:DMG: } - [1667210903.513329][14571:14571] CHIP:DMG: - [1667210903.513405][14571:14571] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667210903.513461][14571:14571] CHIP:DMG: { - [1667210903.513538][14571:14571] CHIP:DMG: data = 15360115350037002402012503010124043218350124008618181818290424ff0118 - [1667210903.513593][14571:14571] CHIP:DMG: } - [1667210903.513645][14571:14571] CHIP:DMG: - [1667210903.513811][14571:14571] CHIP:DMG: ReportDataMessage = - [1667210903.513897][14571:14571] CHIP:DMG: { - [1667210903.513952][14571:14571] CHIP:DMG: AttributeReportIBs = - [1667210903.514029][14571:14571] CHIP:DMG: [ - [1667210903.514113][14571:14571] CHIP:DMG: AttributeReportIB = - [1667210903.514203][14571:14571] CHIP:DMG: { - [1667210903.514292][14571:14571] CHIP:DMG: AttributeStatusIB = - [1667210903.514372][14571:14571] CHIP:DMG: { - [1667210903.514510][14571:14571] CHIP:DMG: AttributePathIB = - [1667210903.514612][14571:14571] CHIP:DMG: { - [1667210903.514717][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667210903.514810][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667210903.514917][14571:14571] CHIP:DMG: Attribute = 0x0000_0032, - [1667210903.515008][14571:14571] CHIP:DMG: } - [1667210903.515129][14571:14571] CHIP:DMG: - [1667210903.515219][14571:14571] CHIP:DMG: StatusIB = - [1667210903.515333][14571:14571] CHIP:DMG: { - [1667210903.515449][14571:14571] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667210903.515541][14571:14571] CHIP:DMG: }, - [1667210903.515647][14571:14571] CHIP:DMG: - [1667210903.515725][14571:14571] CHIP:DMG: }, - disabled: true - - - label: "DUT reads RequirePINForRemoteOperation from the TH." - PICS: DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033 - verification: | - ./chip-tool doorlock read require-pinfor-remote-operation 1 1 - - Verify the " RequirePINForRemoteOperation response" on TH(lock-app): - - [1667210944.050284][14571:14571] CHIP:EM: Handling via exchange: 18164r, Delegate: 0xaaaae921d988 - [1667210944.050380][14571:14571] CHIP:IM: Received Read request - [1667210944.050599][14571:14571] CHIP:DMG: ReadRequestMessage = - [1667210944.050669][14571:14571] CHIP:DMG: { - [1667210944.050724][14571:14571] CHIP:DMG: AttributePathIBs = - [1667210944.050796][14571:14571] CHIP:DMG: [ - [1667210944.050857][14571:14571] CHIP:DMG: AttributePathIB = - [1667210944.050933][14571:14571] CHIP:DMG: { - [1667210944.051010][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667210944.051100][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667210944.051174][14571:14571] CHIP:DMG: Attribute = 0x0000_0033, - [1667210944.051257][14571:14571] CHIP:DMG: } - [1667210944.051336][14571:14571] CHIP:DMG: - [1667210944.051414][14571:14571] CHIP:DMG: ], - [1667210944.051486][14571:14571] CHIP:DMG: - [1667210944.051650][14571:14571] CHIP:DMG: isFabricFiltered = true, - [1667210944.051716][14571:14571] CHIP:DMG: InteractionModelRevision = 1 - [1667210944.051777][14571:14571] CHIP:DMG: }, - [1667210944.051942][14571:14571] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667210944.052239][14571:14571] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667210944.052315][14571:14571] CHIP:DMG: Cluster 101, Attribute 33 is dirty - [1667210944.052370][14571:14571] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0033 (expanded=0) - [1667210944.052439][14571:14571] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667210944.052515][14571:14571] CHIP:DMG: AccessControl: allowed - [1667210944.052629][14571:14571] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667210944.053330][14571:14571] CHIP:EM: <<< [E:18164r M:75109864 (Ack:164269203)] (S) Msg TX to 1:000000000001B669 [673E] --- Type 0001:05 (IM:ReportData) - [1667210944.053433][14571:14571] CHIP:IN: (S) Sending msg 75109864 on secure session with LSID: 42463 - [1667210944.054096][14571:14571] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:42249 | 75109864 | [Interaction Model (1) / Report Data (0x05) / Session = 47747 / Exchange = 18164] - [1667210944.054194][14571:14571] CHIP:DMG: Header Flags = - [1667210944.054251][14571:14571] CHIP:DMG: { - [1667210944.054338][14571:14571] CHIP:DMG: Exchange (0x06) = - [1667210944.054394][14571:14571] CHIP:DMG: { - [1667210944.054454][14571:14571] CHIP:DMG: AckMsg = 164269203 - [1667210944.054559][14571:14571] CHIP:DMG: NeedsAck = true - [1667210944.054610][14571:14571] CHIP:DMG: } - [1667210944.054684][14571:14571] CHIP:DMG: } - [1667210944.054740][14571:14571] CHIP:DMG: - [1667210944.054810][14571:14571] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667210944.054866][14571:14571] CHIP:DMG: { - [1667210944.054921][14571:14571] CHIP:DMG: data = 0083ba00e8157a049161516c98a2dfabfb870554f47a1d1455a978655230ac54d220f52ebc9f5caea654a03fe2300e528271a0b9fe1bd7b9d44abc1452542f401357264e70c7 - [1667210944.054980][14571:14571] CHIP:DMG: buffer_ptr = 187651867774464 - [1667210944.055033][14571:14571] CHIP:DMG: } - [1667210944.055232][14571:14571] CHIP:DMG: - [1667210944.055319][14571:14571] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667210944.055492][14571:14571] CHIP:DMG: { - [1667210944.055557][14571:14571] CHIP:DMG: data = 153601153501260050ec53b3370124020125030101240433182802181818290424ff0118 - [1667210944.055614][14571:14571] CHIP:DMG: } - [1667210944.055667][14571:14571] CHIP:DMG: - [1667210944.055819][14571:14571] CHIP:DMG: ReportDataMessage = - [1667210944.055886][14571:14571] CHIP:DMG: { - [1667210944.055940][14571:14571] CHIP:DMG: AttributeReportIBs = - [1667210944.056126][14571:14571] CHIP:DMG: [ - [1667210944.056195][14571:14571] CHIP:DMG: AttributeReportIB = - [1667210944.056284][14571:14571] CHIP:DMG: { - [1667210944.056351][14571:14571] CHIP:DMG: AttributeDataIB = - [1667210944.056439][14571:14571] CHIP:DMG: { - [1667210944.056530][14571:14571] CHIP:DMG: DataVersion = 0xb353ec50, - [1667210944.056620][14571:14571] CHIP:DMG: AttributePathIB = - [1667210944.056712][14571:14571] CHIP:DMG: { - [1667210944.056805][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667210944.056905][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667210944.057029][14571:14571] CHIP:DMG: Attribute = 0x0000_0033, - [1667210944.057180][14571:14571] CHIP:DMG: } - [1667210944.057279][14571:14571] CHIP:DMG: - [1667210944.057372][14571:14571] CHIP:DMG: Data = false, - [1667210944.057457][14571:14571] CHIP:DMG: }, - disabled: true - - - label: "DUT reads ExpiringUserTimeOut from the TH" - PICS: DRLK.C.F08 && DRLK.C.A0035 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool doorlock read expiring-user-timeout 1 1 - - Verify the " ExpiringUserTimeOut response" on TH(lock-app): - - [1667211094.877989][14571:14571] CHIP:EM: Handling via exchange: 8489r, Delegate: 0xaaaae921d988 - [1667211094.878084][14571:14571] CHIP:IM: Received Read request - [1667211094.878326][14571:14571] CHIP:DMG: ReadRequestMessage = - [1667211094.878399][14571:14571] CHIP:DMG: { - [1667211094.878454][14571:14571] CHIP:DMG: AttributePathIBs = - [1667211094.878721][14571:14571] CHIP:DMG: [ - [1667211094.878941][14571:14571] CHIP:DMG: AttributePathIB = - [1667211094.879021][14571:14571] CHIP:DMG: { - [1667211094.879099][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667211094.879188][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667211094.879269][14571:14571] CHIP:DMG: Attribute = 0x0000_0035, - [1667211094.879352][14571:14571] CHIP:DMG: } - [1667211094.879429][14571:14571] CHIP:DMG: - [1667211094.879500][14571:14571] CHIP:DMG: ], - [1667211094.879571][14571:14571] CHIP:DMG: - [1667211094.879637][14571:14571] CHIP:DMG: isFabricFiltered = true, - [1667211094.879702][14571:14571] CHIP:DMG: InteractionModelRevision = 1 - [1667211094.879762][14571:14571] CHIP:DMG: }, - [1667211094.879927][14571:14571] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667211094.880152][14571:14571] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667211094.880225][14571:14571] CHIP:DMG: Cluster 101, Attribute 35 is dirty - [1667211094.880280][14571:14571] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_0035 (expanded=0) - [1667211094.880386][14571:14571] CHIP:DMG: Sending report (payload has 34 bytes)... - [1667211094.880917][14571:14571] CHIP:EM: <<< [E:8489r M:147234094 (Ack:155975823)] (S) Msg TX to 1:000000000001B669 [673E] --- Type 0001:05 (IM:ReportData) - [1667211094.881016][14571:14571] CHIP:IN: (S) Sending msg 147234094 on secure session with LSID: 42464 - [1667211094.881965][14571:14571] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:39589 | 147234094 | [Interaction Model (1) / Report Data (0x05) / Session = 2140 / Exchange = 8489] - [1667211094.882063][14571:14571] CHIP:DMG: Header Flags = - [1667211094.882121][14571:14571] CHIP:DMG: { - [1667211094.882207][14571:14571] CHIP:DMG: Exchange (0x06) = - [1667211094.882322][14571:14571] CHIP:DMG: { - [1667211094.882392][14571:14571] CHIP:DMG: AckMsg = 155975823 - [1667211094.882449][14571:14571] CHIP:DMG: NeedsAck = true - [1667211094.882556][14571:14571] CHIP:DMG: } - [1667211094.882632][14571:14571] CHIP:DMG: } - [1667211094.882686][14571:14571] CHIP:DMG: - [1667211094.882756][14571:14571] CHIP:DMG: Encrypted Payload (68 bytes) = - [1667211094.882812][14571:14571] CHIP:DMG: { - [1667211094.882867][14571:14571] CHIP:DMG: data = 005c08002e9dc6083156694de240a6cc71c1254a3699ad89fa0d75078148c8ebf479b1a2a617e58a501a8f89dee8412f29653660cd42de38c80a886723f5a24687afb72f - [1667211094.882925][14571:14571] CHIP:DMG: buffer_ptr = 187651867778320 - [1667211094.882979][14571:14571] CHIP:DMG: } - [1667211094.883031][14571:14571] CHIP:DMG: - [1667211094.883106][14571:14571] CHIP:DMG: Decrypted Payload (34 bytes) = - [1667211094.883162][14571:14571] CHIP:DMG: { - [1667211094.883216][14571:14571] CHIP:DMG: data = 15360115350037002402012503010124043518350124008618181818290424ff0118 - [1667211094.883271][14571:14571] CHIP:DMG: } - [1667211094.883324][14571:14571] CHIP:DMG: - [1667211094.883462][14571:14571] CHIP:DMG: ReportDataMessage = - [1667211094.883527][14571:14571] CHIP:DMG: { - [1667211094.883581][14571:14571] CHIP:DMG: AttributeReportIBs = - [1667211094.883728][14571:14571] CHIP:DMG: [ - [1667211094.883799][14571:14571] CHIP:DMG: AttributeReportIB = - [1667211094.883888][14571:14571] CHIP:DMG: { - [1667211094.883961][14571:14571] CHIP:DMG: AttributeStatusIB = - [1667211094.884044][14571:14571] CHIP:DMG: { - [1667211094.884129][14571:14571] CHIP:DMG: AttributePathIB = - [1667211094.884215][14571:14571] CHIP:DMG: { - [1667211094.884309][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667211094.884400][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667211094.884489][14571:14571] CHIP:DMG: Attribute = 0x0000_0035, - [1667211094.884580][14571:14571] CHIP:DMG: } - [1667211094.884683][14571:14571] CHIP:DMG: - [1667211094.884758][14571:14571] CHIP:DMG: StatusIB = - [1667211094.884850][14571:14571] CHIP:DMG: { - [1667211094.884942][14571:14571] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1667211094.885033][14571:14571] CHIP:DMG: }, - [1667211094.885119][14571:14571] CHIP:DMG: - [1667211094.885195][14571:14571] CHIP:DMG: }, - disabled: true - - - label: "DUT reads NumberOfCredentialsSupportedPerUser attribute from TH" - PICS: DRLK.C.F08 && DRLK.C.A001c - verification: | - ./chip-tool doorlock read number-of-credentials-supported-per-user 1 1 - - Verify the " NumberOfCredentialsSupportedPerUser response" on TH(lock-app): - - [1667211128.170197][14571:14571] CHIP:EM: Handling via exchange: 10905r, Delegate: 0xaaaae921d988 - [1667211128.170318][14571:14571] CHIP:IM: Received Read request - [1667211128.170585][14571:14571] CHIP:DMG: ReadRequestMessage = - [1667211128.170654][14571:14571] CHIP:DMG: { - [1667211128.170731][14571:14571] CHIP:DMG: AttributePathIBs = - [1667211128.170799][14571:14571] CHIP:DMG: [ - [1667211128.170861][14571:14571] CHIP:DMG: AttributePathIB = - [1667211128.170938][14571:14571] CHIP:DMG: { - [1667211128.171032][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667211128.171125][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667211128.171236][14571:14571] CHIP:DMG: Attribute = 0x0000_001C, - [1667211128.171320][14571:14571] CHIP:DMG: } - [1667211128.171398][14571:14571] CHIP:DMG: - [1667211128.171491][14571:14571] CHIP:DMG: ], - [1667211128.171563][14571:14571] CHIP:DMG: - [1667211128.171652][14571:14571] CHIP:DMG: isFabricFiltered = true, - [1667211128.171717][14571:14571] CHIP:DMG: InteractionModelRevision = 1 - [1667211128.171778][14571:14571] CHIP:DMG: }, - [1667211128.171962][14571:14571] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667211128.172229][14571:14571] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667211128.172304][14571:14571] CHIP:DMG: Cluster 101, Attribute 1c is dirty - [1667211128.172360][14571:14571] CHIP:DMG: Reading attribute: Cluster=0x0000_0101 Endpoint=1 AttributeId=0x0000_001C (expanded=0) - [1667211128.172428][14571:14571] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=v - [1667211128.172527][14571:14571] CHIP:DMG: AccessControl: allowed - [1667211128.172642][14571:14571] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667211128.173231][14571:14571] CHIP:EM: <<< [E:10905r M:126638455 (Ack:59306948)] (S) Msg TX to 1:000000000001B669 [673E] --- Type 0001:05 (IM:ReportData) - [1667211128.173333][14571:14571] CHIP:IN: (S) Sending msg 126638455 on secure session with LSID: 42465 - [1667211128.174026][14571:14571] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:53130 | 126638455 | [Interaction Model (1) / Report Data (0x05) / Session = 63361 / Exchange = 10905] - [1667211128.174123][14571:14571] CHIP:DMG: Header Flags = - [1667211128.174182][14571:14571] CHIP:DMG: { - [1667211128.174269][14571:14571] CHIP:DMG: Exchange (0x06) = - [1667211128.174326][14571:14571] CHIP:DMG: { - [1667211128.174386][14571:14571] CHIP:DMG: AckMsg = 59306948 - [1667211128.174504][14571:14571] CHIP:DMG: NeedsAck = true - [1667211128.174644][14571:14571] CHIP:DMG: } - [1667211128.174749][14571:14571] CHIP:DMG: } - [1667211128.174806][14571:14571] CHIP:DMG: - [1667211128.174876][14571:14571] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667211128.174952][14571:14571] CHIP:DMG: { - [1667211128.175008][14571:14571] CHIP:DMG: data = 0081f70077598c07044cf9979924fdac4ff6a23289bb1f97e6e3a002eca76c55e494aa8ab1d0276c8b4498876b69956f77ba413fc733c35d4f988609d536f9be5cefb7c6752558 - [1667211128.175068][14571:14571] CHIP:DMG: buffer_ptr = 187651867773504 - [1667211128.175145][14571:14571] CHIP:DMG: } - [1667211128.175199][14571:14571] CHIP:DMG: - [1667211128.175276][14571:14571] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667211128.175354][14571:14571] CHIP:DMG: { - [1667211128.175409][14571:14571] CHIP:DMG: data = 153601153501260050ec53b337012402012503010124041c18240205181818290424ff0118 - [1667211128.175465][14571:14571] CHIP:DMG: } - [1667211128.175539][14571:14571] CHIP:DMG: - [1667211128.175716][14571:14571] CHIP:DMG: ReportDataMessage = - [1667211128.175782][14571:14571] CHIP:DMG: { - [1667211128.175836][14571:14571] CHIP:DMG: AttributeReportIBs = - [1667211128.175913][14571:14571] CHIP:DMG: [ - [1667211128.175997][14571:14571] CHIP:DMG: AttributeReportIB = - [1667211128.176090][14571:14571] CHIP:DMG: { - [1667211128.176185][14571:14571] CHIP:DMG: AttributeDataIB = - [1667211128.176275][14571:14571] CHIP:DMG: { - [1667211128.176382][14571:14571] CHIP:DMG: DataVersion = 0xb353ec50, - [1667211128.176473][14571:14571] CHIP:DMG: AttributePathIB = - [1667211128.176582][14571:14571] CHIP:DMG: { - [1667211128.176670][14571:14571] CHIP:DMG: Endpoint = 0x1, - [1667211128.176786][14571:14571] CHIP:DMG: Cluster = 0x101, - [1667211128.176876][14571:14571] CHIP:DMG: Attribute = 0x0000_001C, - [1667211128.176980][14571:14571] CHIP:DMG: } - [1667211128.177078][14571:14571] CHIP:DMG: - [1667211128.177360][14571:14571] CHIP:DMG: Data = 5, - [1667211128.177444][14571:14571] CHIP:DMG: }, - [1667211128.177561][14571:14571] CHIP:DMG: - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml new file mode 100644 index 00000000000000..062b253bb8f103 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml @@ -0,0 +1,212 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 121.3.1. [TC-DRLK-3.1] Attributes check [DUT - Client] + +PICS: + - DRLK.C + +config: + nodeId: 0x12344321 + cluster: "Door Lock" + endpoint: 0 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT reads LockState attribute value from TH" + wait: "readAttribute" + attribute: "LockState" + PICS: DRLK.C.A0000 + + - label: "DUT reads LockType attribute value from TH" + wait: "readAttribute" + attribute: "LockType" + PICS: DRLK.C.A0001 + + - label: "DUT reads ActuatorEnabled attribute value from TH" + wait: "readAttribute" + attribute: "ActuatorEnabled" + PICS: DRLK.C.A0002 + + - label: "DUT reads DoorState attribute value from TH" + wait: "readAttribute" + attribute: "DoorState" + PICS: DRLK.C.F05 && DRLK.C.A0003 + + - label: "DUT reads DoorOpenEvents attribute value from TH" + wait: "readAttribute" + attribute: "DoorOpenEvents" + PICS: DRLK.C.F05 && DRLK.C.A0004 + + - label: "DUT reads DoorClosedEvents attribute value from TH" + wait: "readAttribute" + attribute: "DoorClosedEvents" + PICS: DRLK.C.F05 && DRLK.C.A0005 + + - label: "DUT reads OpenPeriod attribute value from TH" + wait: "readAttribute" + attribute: "OpenPeriod" + PICS: DRLK.C.F05 && DRLK.C.A0006 + + - label: "DUT reads NumberOfTotalUsersSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfTotalUsersSupported" + PICS: DRLK.C.F05 && DRLK.C.A0011 + + - label: "DUT reads NumberofPINUsersSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfPINUsersSupported" + PICS: DRLK.C.F00 && DRLK.C.A0012 + + - label: "DUT reads NumberofRFIDUsersSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfRFIDUsersSupported" + PICS: DRLK.C.F01 && DRLK.C.A0013 + + - label: + "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfWeekDaySchedulesSupportedPerUser" + PICS: DRLK.C.F04 && DRLK.C.A0014 + + - label: + "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfYearDaySchedulesSupportedPerUser" + PICS: DRLK.C.F04 && DRLK.C.A0015 + + - label: + "DUT reads NumberofHolidaySchedulesSupported attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfHolidaySchedulesSupported" + PICS: DRLK.C.F04 && DRLK.C.A0016 + + - label: "DUT reads MaxPINCodeLength attribute value from TH" + wait: "readAttribute" + attribute: "MaxPINCodeLength" + PICS: DRLK.C.F00 && DRLK.C.A0017 + + - label: "DUT reads MinPINCodeLength attribute value from TH" + wait: "readAttribute" + attribute: "MinPINCodeLength" + PICS: DRLK.C.F00 && DRLK.C.A0018 + + - label: "DUT reads MaxRFIDCodeLength attribute value from TH" + wait: "readAttribute" + attribute: "MaxRFIDCodeLength" + PICS: DRLK.C.F01 && DRLK.C.A0019 + + - label: "DUT reads MinRFIDCodeLength attribute value from TH" + wait: "readAttribute" + attribute: "MinRFIDCodeLength" + PICS: DRLK.C.F01 && DRLK.C.A001a + + - label: "DUT reads CredentialRulesSupport attribute value from TH" + wait: "readAttribute" + attribute: "CredentialRulesSupport" + PICS: DRLK.C.F08 && DRLK.C.A001b + + - label: "DUT reads Language attribute value from TH" + wait: "readAttribute" + attribute: "Language" + PICS: DRLK.C.A0021 + + - label: "DUT reads LEDSettings attribute value from TH" + wait: "readAttribute" + attribute: "LEDSettings" + PICS: DRLK.C.A0022 + + - label: "DUT reads AutoRelockTime attribute value from TH" + wait: "readAttribute" + attribute: "AutoRelockTime" + PICS: DRLK.C.A0023 + + - label: "DUT reads SoundVolume attribute value from TH" + wait: "readAttribute" + attribute: "SoundVolume" + PICS: DRLK.C.A0024 + + - label: "DUT reads OperatingMode attribute value from TH" + wait: "readAttribute" + attribute: "OperatingMode" + PICS: DRLK.C.A0025 + + - label: "DUT reads SupportedOperatingModes attribute value from TH" + wait: "readAttribute" + attribute: "SupportedOperatingModes" + PICS: DRLK.C.A0026 + + - label: "DUT reads DefaultConfigurationRegister attribute value from TH" + wait: "readAttribute" + attribute: "DefaultConfigurationRegister" + PICS: DRLK.C.A0027 + + - label: "DUT reads EnableLocalProgramming attribute value from TH" + wait: "readAttribute" + attribute: "EnableLocalProgramming" + PICS: DRLK.C.A0028 + + - label: "DUT reads EnableOneTouchLocking attribute value from TH" + wait: "readAttribute" + attribute: "EnableOneTouchLocking" + PICS: DRLK.C.A0029 + + - label: "DUT reads EnableInsideStatusLED attribute value from TH" + wait: "readAttribute" + attribute: "EnableInsideStatusLED" + PICS: DRLK.C.A002a + + - label: "DUT reads EnablePrivacyModeButton attribute value from TH" + wait: "readAttribute" + attribute: "EnablePrivacyModeButton" + PICS: DRLK.C.A002b + + - label: "DUT reads LocalProgrammingFeatures attribute value from TH" + wait: "readAttribute" + attribute: "LocalProgrammingFeatures" + PICS: DRLK.C.A002c + + - label: "DUT reads WrongCodeEntryLimit attribute value from TH" + wait: "readAttribute" + attribute: "WrongCodeEntryLimit" + PICS: DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030 + + - label: "DUT reads UserCodeTemporaryDisableTime attribute value from TH" + wait: "readAttribute" + attribute: "UserCodeTemporaryDisableTime" + PICS: DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031 + + - label: "DUT reads SendPINOverTheAir attribute value from TH" + wait: "readAttribute" + attribute: "SendPINOverTheAir" + PICS: DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032 + + - label: "DUT reads RequirePINForRemoteOperation attribute value from TH" + wait: "readAttribute" + attribute: "RequirePINforRemoteOperation" + PICS: DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033 + + - label: "DUT reads ExpiringUserTimeOut attribute value from TH" + wait: "readAttribute" + attribute: "ExpiringUserTimeout" + PICS: DRLK.C.F08 && DRLK.C.A0035 + + - label: + "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH" + wait: "readAttribute" + attribute: "NumberOfCredentialsSupportedPerUser" + PICS: DRLK.C.F08 && DRLK.C.A001c diff --git a/src/app/tests/suites/certification/Test_TC_FAN_2_5.yaml b/src/app/tests/suites/certification/Test_TC_FAN_2_5.yaml new file mode 100644 index 00000000000000..127cda996e5680 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_FAN_2_5.yaml @@ -0,0 +1,41 @@ +# Copyright (c) 2023 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 263.2.5. [TC-FAN-2.5] Optional direction attributes with DUT as Server + +PICS: + - FAN.S + - FAN.S.F05 + +config: + nodeId: 0x12344321 + cluster: "Fan Control" + endpoint: 1 + +tests: + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH reads from the DUT the the AirflowDirection attribute" + PICS: FAN.S.F05 + command: "readAttribute" + attribute: "AirflowDirection" + response: + constraints: + type: enum8 diff --git a/src/app/tests/suites/certification/Test_TC_G_2_2.yaml b/src/app/tests/suites/certification/Test_TC_G_2_2.yaml index 8225c69c9bbd1a..5439cb91d10bd8 100644 --- a/src/app/tests/suites/certification/Test_TC_G_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_G_2_2.yaml @@ -318,54 +318,6 @@ tests: [1683797474.815508][38909:38911] CHIP:DMG: [1683797474.815512][38909:38911] CHIP:DMG: InteractionModelRevision = 1 [1683797474.815515][38909:38911] CHIP:DMG: } - - Before adding the Groups(MaxGroup+1) execute below command which is used to check the Resource_Exhausted Condition - - ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 13, "groupKeySetID": 1, "fabricIndex": 1} ]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - - [1683799348.785746][39651:39653] CHIP:DMG: WriteResponseMessage = - [1683799348.785751][39651:39653] CHIP:DMG: { - [1683799348.785755][39651:39653] CHIP:DMG: AttributeStatusIBs = - [1683799348.785763][39651:39653] CHIP:DMG: [ - [1683799348.785767][39651:39653] CHIP:DMG: AttributeStatusIB = - [1683799348.785771][39651:39653] CHIP:DMG: { - [1683799348.785775][39651:39653] CHIP:DMG: AttributePathIB = - [1683799348.785780][39651:39653] CHIP:DMG: { - [1683799348.785785][39651:39653] CHIP:DMG: Endpoint = 0x0, - [1683799348.785789][39651:39653] CHIP:DMG: Cluster = 0x3f, - [1683799348.785794][39651:39653] CHIP:DMG: Attribute = 0x0000_0000, - [1683799348.785798][39651:39653] CHIP:DMG: } - [1683799348.785804][39651:39653] CHIP:DMG: - [1683799348.785811][39651:39653] CHIP:DMG: StatusIB = - [1683799348.785816][39651:39653] CHIP:DMG: { - [1683799348.785821][39651:39653] CHIP:DMG: status = 0x00 (SUCCESS), - [1683799348.785825][39651:39653] CHIP:DMG: }, - [1683799348.785831][39651:39653] CHIP:DMG: - [1683799348.785835][39651:39653] CHIP:DMG: }, - [1683799348.785844][39651:39653] CHIP:DMG: - [1683799348.785848][39651:39653] CHIP:DMG: AttributeStatusIB = - [1683799348.785852][39651:39653] CHIP:DMG: { - [1683799348.785856][39651:39653] CHIP:DMG: AttributePathIB = - [1683799348.785860][39651:39653] CHIP:DMG: { - [1683799348.785865][39651:39653] CHIP:DMG: Endpoint = 0x0, - [1683799348.785869][39651:39653] CHIP:DMG: Cluster = 0x3f, - [1683799348.785874][39651:39653] CHIP:DMG: Attribute = 0x0000_0000, - [1683799348.785878][39651:39653] CHIP:DMG: ListIndex = Null, - [1683799348.785882][39651:39653] CHIP:DMG: } - [1683799348.785889][39651:39653] CHIP:DMG: - [1683799348.785894][39651:39653] CHIP:DMG: StatusIB = - [1683799348.785898][39651:39653] CHIP:DMG: { - [1683799348.785904][39651:39653] CHIP:DMG: status = 0x00 (SUCCESS), - [1683799348.785909][39651:39653] CHIP:DMG: }, - [1683799348.785914][39651:39653] CHIP:DMG: - [1683799348.785918][39651:39653] CHIP:DMG: }, - [1683799348.785924][39651:39653] CHIP:DMG: - [1683799348.785927][39651:39653] CHIP:DMG: ], - [1683799348.785936][39651:39653] CHIP:DMG: - [1683799348.785940][39651:39653] CHIP:DMG: InteractionModelRevision = 1 - [1683799348.785943][39651:39653] CHIP:DMG: } disabled: true - label: @@ -656,6 +608,57 @@ tests: [1683799060.033932][39543:39545] CHIP:TOO: } disabled: true + - label: "TH binds GroupId (maxgroups+1) with GroupKeySetID 1" + verification: | + Before adding the Groups(MaxGroup+1) execute below command which is used to check the Resource_Exhausted Condition + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 13, "groupKeySetID": 1, "fabricIndex": 1} ]' 1 0 + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1683799348.785746][39651:39653] CHIP:DMG: WriteResponseMessage = + [1683799348.785751][39651:39653] CHIP:DMG: { + [1683799348.785755][39651:39653] CHIP:DMG: AttributeStatusIBs = + [1683799348.785763][39651:39653] CHIP:DMG: [ + [1683799348.785767][39651:39653] CHIP:DMG: AttributeStatusIB = + [1683799348.785771][39651:39653] CHIP:DMG: { + [1683799348.785775][39651:39653] CHIP:DMG: AttributePathIB = + [1683799348.785780][39651:39653] CHIP:DMG: { + [1683799348.785785][39651:39653] CHIP:DMG: Endpoint = 0x0, + [1683799348.785789][39651:39653] CHIP:DMG: Cluster = 0x3f, + [1683799348.785794][39651:39653] CHIP:DMG: Attribute = 0x0000_0000, + [1683799348.785798][39651:39653] CHIP:DMG: } + [1683799348.785804][39651:39653] CHIP:DMG: + [1683799348.785811][39651:39653] CHIP:DMG: StatusIB = + [1683799348.785816][39651:39653] CHIP:DMG: { + [1683799348.785821][39651:39653] CHIP:DMG: status = 0x00 (SUCCESS), + [1683799348.785825][39651:39653] CHIP:DMG: }, + [1683799348.785831][39651:39653] CHIP:DMG: + [1683799348.785835][39651:39653] CHIP:DMG: }, + [1683799348.785844][39651:39653] CHIP:DMG: + [1683799348.785848][39651:39653] CHIP:DMG: AttributeStatusIB = + [1683799348.785852][39651:39653] CHIP:DMG: { + [1683799348.785856][39651:39653] CHIP:DMG: AttributePathIB = + [1683799348.785860][39651:39653] CHIP:DMG: { + [1683799348.785865][39651:39653] CHIP:DMG: Endpoint = 0x0, + [1683799348.785869][39651:39653] CHIP:DMG: Cluster = 0x3f, + [1683799348.785874][39651:39653] CHIP:DMG: Attribute = 0x0000_0000, + [1683799348.785878][39651:39653] CHIP:DMG: ListIndex = Null, + [1683799348.785882][39651:39653] CHIP:DMG: } + [1683799348.785889][39651:39653] CHIP:DMG: + [1683799348.785894][39651:39653] CHIP:DMG: StatusIB = + [1683799348.785898][39651:39653] CHIP:DMG: { + [1683799348.785904][39651:39653] CHIP:DMG: status = 0x00 (SUCCESS), + [1683799348.785909][39651:39653] CHIP:DMG: }, + [1683799348.785914][39651:39653] CHIP:DMG: + [1683799348.785918][39651:39653] CHIP:DMG: }, + [1683799348.785924][39651:39653] CHIP:DMG: + [1683799348.785927][39651:39653] CHIP:DMG: ], + [1683799348.785936][39651:39653] CHIP:DMG: + [1683799348.785940][39651:39653] CHIP:DMG: InteractionModelRevision = 1 + [1683799348.785943][39651:39653] CHIP:DMG: } + disabled: true + - label: "TH sends AddGroup command to DUT as unicast with the GroupID set to (maxgroups+1)" diff --git a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml index 1c33ac64ae7b4c..b1549332c0c3ac 100644 --- a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml @@ -360,71 +360,6 @@ tests: [1683882354.198223][7723:7725] CHIP:DMG: [1683882354.198227][7723:7725] CHIP:DMG: InteractionModelRevision = 1 [1683882354.198230][7723:7725] CHIP:DMG: } - - Before adding the Groups (Maxgroup+1) by AddGroupIfIdentifying execute below command which is used to check the Resource_Exhausted Condition - - ./chip-tool groupkeymanagement write group-key-map '[{"groupId":18, "groupKeySetID": 1, "fabricIndex": 1},{"groupId":19, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - - [1674551849.075921][20994:20996] CHIP:DMG: WriteResponseMessage = - [1674551849.075924][20994:20996] CHIP:DMG: { - [1674551849.075926][20994:20996] CHIP:DMG: AttributeStatusIBs = - [1674551849.075931][20994:20996] CHIP:DMG: [ - [1674551849.075934][20994:20996] CHIP:DMG: AttributeStatusIB = - [1674551849.075937][20994:20996] CHIP:DMG: { - [1674551849.075940][20994:20996] CHIP:DMG: AttributePathIB = - [1674551849.075943][20994:20996] CHIP:DMG: { - [1674551849.075947][20994:20996] CHIP:DMG: Endpoint = 0x0, - [1674551849.075950][20994:20996] CHIP:DMG: Cluster = 0x3f, - [1674551849.075953][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, - [1674551849.075956][20994:20996] CHIP:DMG: } - [1674551849.075961][20994:20996] CHIP:DMG: - [1674551849.075964][20994:20996] CHIP:DMG: StatusIB = - [1674551849.075967][20994:20996] CHIP:DMG: { - [1674551849.075971][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), - [1674551849.075974][20994:20996] CHIP:DMG: }, - [1674551849.075977][20994:20996] CHIP:DMG: - [1674551849.075980][20994:20996] CHIP:DMG: }, - [1674551849.075986][20994:20996] CHIP:DMG: - [1674551849.075989][20994:20996] CHIP:DMG: AttributeStatusIB = - [1674551849.075991][20994:20996] CHIP:DMG: { - [1674551849.075994][20994:20996] CHIP:DMG: AttributePathIB = - [1674551849.075997][20994:20996] CHIP:DMG: { - [1674551849.076000][20994:20996] CHIP:DMG: Endpoint = 0x0, - [1674551849.076003][20994:20996] CHIP:DMG: Cluster = 0x3f, - [1674551849.076006][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, - [1674551849.076010][20994:20996] CHIP:DMG: ListIndex = Null, - [1674551849.076012][20994:20996] CHIP:DMG: } - [1674551849.076017][20994:20996] CHIP:DMG: - [1674551849.076020][20994:20996] CHIP:DMG: StatusIB = - [1674551849.076022][20994:20996] CHIP:DMG: { - [1674551849.076025][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), - [1674551849.076028][20994:20996] CHIP:DMG: }, - [1674551849.076031][20994:20996] CHIP:DMG: - [1674551849.076034][20994:20996] CHIP:DMG: }, - [1674551849.076040][20994:20996] CHIP:DMG: - [1674551849.076043][20994:20996] CHIP:DMG: AttributeStatusIB = - [1674551849.076046][20994:20996] CHIP:DMG: { - [1674551849.076048][20994:20996] CHIP:DMG: AttributePathIB = - [1674551849.076051][20994:20996] CHIP:DMG: { - [1674551849.076054][20994:20996] CHIP:DMG: Endpoint = 0x0, - [1674551849.076057][20994:20996] CHIP:DMG: Cluster = 0x3f, - [1674551849.076060][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, - [1674551849.076063][20994:20996] CHIP:DMG: ListIndex = Null, - [1674551849.076066][20994:20996] CHIP:DMG: } - [1674551849.076071][20994:20996] CHIP:DMG: - [1674551849.076074][20994:20996] CHIP:DMG: StatusIB = - [1674551849.076076][20994:20996] CHIP:DMG: { - [1674551849.076080][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), - [1674551849.076082][20994:20996] CHIP:DMG: }, - [1674551849.076085][20994:20996] CHIP:DMG: - [1674551849.076088][20994:20996] CHIP:DMG: }, - [1674551849.076092][20994:20996] CHIP:DMG: - [1674551849.076094][20994:20996] CHIP:DMG: ], - [1674551849.076102][20994:20996] CHIP:DMG: - [1674551849.076105][20994:20996] CHIP:DMG: InteractionModelRevision = 1 - [1674551849.076108][20994:20996] CHIP:DMG: } disabled: true - label: "DUT supports Identify cluster" @@ -799,6 +734,76 @@ tests: [1683882478.955160][7783:7785] CHIP:DMG: }, disabled: true + - label: + "TH binds GroupId( 0x0006 + maxgroups to 0x0006 + maxgroups+1) with + GroupKeySetID 1" + verification: | + Before adding the Groups (Maxgroup+1) by AddGroupIfIdentifying execute below command which is used to check the Resource_Exhausted Condition + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId":18, "groupKeySetID": 1, "fabricIndex": 1},{"groupId":19, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1674551849.075921][20994:20996] CHIP:DMG: WriteResponseMessage = + [1674551849.075924][20994:20996] CHIP:DMG: { + [1674551849.075926][20994:20996] CHIP:DMG: AttributeStatusIBs = + [1674551849.075931][20994:20996] CHIP:DMG: [ + [1674551849.075934][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075937][20994:20996] CHIP:DMG: { + [1674551849.075940][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075943][20994:20996] CHIP:DMG: { + [1674551849.075947][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.075950][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.075953][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.075956][20994:20996] CHIP:DMG: } + [1674551849.075961][20994:20996] CHIP:DMG: + [1674551849.075964][20994:20996] CHIP:DMG: StatusIB = + [1674551849.075967][20994:20996] CHIP:DMG: { + [1674551849.075971][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.075974][20994:20996] CHIP:DMG: }, + [1674551849.075977][20994:20996] CHIP:DMG: + [1674551849.075980][20994:20996] CHIP:DMG: }, + [1674551849.075986][20994:20996] CHIP:DMG: + [1674551849.075989][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075991][20994:20996] CHIP:DMG: { + [1674551849.075994][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075997][20994:20996] CHIP:DMG: { + [1674551849.076000][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076003][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076006][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076010][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076012][20994:20996] CHIP:DMG: } + [1674551849.076017][20994:20996] CHIP:DMG: + [1674551849.076020][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076022][20994:20996] CHIP:DMG: { + [1674551849.076025][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076028][20994:20996] CHIP:DMG: }, + [1674551849.076031][20994:20996] CHIP:DMG: + [1674551849.076034][20994:20996] CHIP:DMG: }, + [1674551849.076040][20994:20996] CHIP:DMG: + [1674551849.076043][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.076046][20994:20996] CHIP:DMG: { + [1674551849.076048][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.076051][20994:20996] CHIP:DMG: { + [1674551849.076054][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076057][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076060][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076063][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076066][20994:20996] CHIP:DMG: } + [1674551849.076071][20994:20996] CHIP:DMG: + [1674551849.076074][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076076][20994:20996] CHIP:DMG: { + [1674551849.076080][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076082][20994:20996] CHIP:DMG: }, + [1674551849.076085][20994:20996] CHIP:DMG: + [1674551849.076088][20994:20996] CHIP:DMG: }, + [1674551849.076092][20994:20996] CHIP:DMG: + [1674551849.076094][20994:20996] CHIP:DMG: ], + [1674551849.076102][20994:20996] CHIP:DMG: + [1674551849.076105][20994:20996] CHIP:DMG: InteractionModelRevision = 1 + [1674551849.076108][20994:20996] CHIP:DMG: } + disabled: true + - label: "If maxgroups>0, TH sends AddGroupIfIdentifying command to DUT (maxgroups+2) times as unicast method with different GroupID" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_11.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_11.yaml index b1f1e2dacb6de3..fce4409b800802 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_11.yaml @@ -21,6 +21,9 @@ config: nodeId: 0x12344321 cluster: "Media Input" endpoint: 1 + Index: + type: int8u + defaultValue: 1 tests: - label: "Wait for the commissioned device to be retrieved" @@ -43,17 +46,21 @@ tests: command: "readAttribute" attribute: "InputList" - - label: "Select Input Command" + - label: + "TH sends SelectInput command to DUT to select an input by passing the + index of the preferred input." PICS: MEDIAINPUT.S.C00.Rsp command: "SelectInput" arguments: values: - name: "Index" - value: 1 + value: Index - - label: "Read current input list" + - label: + "TH reads _CurrentInput attribute from the DUT to show the current + input selected." PICS: MEDIAINPUT.S.A0001 && MEDIAINPUT.S.C00.Rsp command: "readAttribute" attribute: "CurrentInput" response: - value: 1 + value: Index diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_13.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_13.yaml index f2298a9f5d603e..aafdf522eb3d89 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_13.yaml @@ -22,6 +22,9 @@ config: nodeId: 0x12344321 cluster: "Media Input" endpoint: 1 + Index: + type: int8u + defaultValue: 1 tests: - label: "Wait for the commissioned device to be retrieved" @@ -40,14 +43,19 @@ tests: PICS: MEDIAINPUT.S.A0000 command: "readAttribute" attribute: "InputList" + response: + constraints: + type: list - - label: "Rename Input Command" + - label: + "TH sends a RenameInput command to DUT to rename an input from the + list returned in step 1" PICS: MEDIAINPUT.S.C03.Rsp command: "RenameInput" arguments: values: - name: "Index" - value: 1 + value: Index - name: "Name" value: "A1" diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml index 4e70ee1989e40b..1b6ce8f4169e8a 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml @@ -29,13 +29,18 @@ tests: This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command disabled: true - - label: "TH reads the SupportedModes attribute from DUT" + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the SupportedModes attribute." PICS: MOD.S.A0002 verification: | ./chip-tool modeselect read supported-modes 1 1 - Verify on TH(chip-tool) log SupportedModes provides a list of modes and each mode should be a struct containing a Label , Mode Number and SemanticTags. - Also each entry in the semantics tag list, are structs containing a value field and manufacturer code. All of these values should be no larger than 16 bits and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify SupportedModes attribute should contains atleast two ModeOptionsStruct entries with unique mode field value and label field value below is the sample log provided for the raspi platform: [1654595167.600241][14362:14367] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 [1654595167.600345][14362:14367] CHIP:TOO: SupportedModes: 3 entries @@ -68,24 +73,24 @@ tests: [1654595167.601115][14362:14367] CHIP:TOO: } disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - Verify on TH(chip-tool) logs ,current-mode value is present in the list of modes from step 1 and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: [1645776767.611140][4667:4672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469718 [1645776767.611214][4667:4672] CHIP:TOO: CurrentMode: 0 disabled: true - - label: "TH reads the OnMode attribute from the DUT" + - label: "TH reads from the DUT the OnMode attribute." PICS: MOD.S.A0005 verification: | ./chip-tool modeselect read on-mode 1 1 - Verify on TH(chip-tool) logs , onmode value is listed in the supported modes in step 1 or null and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065072 @@ -93,12 +98,12 @@ tests: [1649676072.466094][10754:10759] CHIP:TOO: OnMode: null disabled: true - - label: "TH reads the StartUpMode attribute from the DUT" + - label: "TH reads from the DUT the StartUpMode attribute." PICS: MOD.S.A0004 verification: | ./chip-tool modeselect read start-up-mode 1 1 - Verify on TH(chip-tool) logs ,start-up-mode value is in the list of modes from step 1 and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer and value is from supported_modes_dut, below is the sample log provided for the raspi platform: [1649677014.496348][10778:10784] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 4277065072 @@ -106,25 +111,14 @@ tests: [1649677014.496469][10778:10784] CHIP:TOO: StartUpMode: 0 disabled: true - - label: "TH reads the Description attribute from the DUT" + - label: "TH reads from the DUT the Description attribute." PICS: MOD.S.A0000 verification: | ./chip-tool modeselect read description 1 1 - Verify on TH(chip-tool) logs , Description value has human readable text string and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs , Description value is human readable text string and below is the sample log provided for the raspi platform: [1649677114.614974][10787:10792] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000 DataVersion: 4277065072 [1649677114.615110][10787:10792] CHIP:TOO: Description: Coffee disabled: true - - - label: "TH reads the StandardNamespace attribute from the DUT" - PICS: MOD.S.A0001 - verification: | - ./chip-tool modeselect read standard-namespace 1 1 - - Verify on TH(chip-tool) logs ,standard-namespace value has 16 bit enum (null is also acceptable) and below is the sample log provided for the raspi platform: - - [1649677167.900539][10795:10801] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0001 DataVersion: 4277065072 - [1649677167.900660][10795:10801] CHIP:TOO: StandardNamespace: 0 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml deleted file mode 100644 index bae71abddbecc8..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml +++ /dev/null @@ -1,852 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 80.1.3. [TC-MOD-1.3] Attributes with client as DUT - -PICS: - - MOD.C - - MOD.C.AM-READ - - MOD.C.AO-READ - - MOD.C.AM-WRITE - - MOD.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: - "DUT reads all supported mandatory attributes from TH one at a time in - a manufacturer specific order" - PICS: MOD.C.AM-READ - verification: | - ./chip-tool modeselect read supported-modes 1 1 - - verify the "supported-modes response" on the TH (all-cluster-app) log: - - [1666940683.282921][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940683.282923][9718:9718] CHIP:DMG: { - [1666940683.282925][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940683.282928][9718:9718] CHIP:DMG: [ - [1666940683.282929][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.282933][9718:9718] CHIP:DMG: { - [1666940683.282935][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.282937][9718:9718] CHIP:DMG: { - [1666940683.282939][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.282941][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.282944][9718:9718] CHIP:DMG: { - [1666940683.282946][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.282948][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.282950][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.282952][9718:9718] CHIP:DMG: } - [1666940683.282955][9718:9718] CHIP:DMG: - [1666940683.282957][9718:9718] CHIP:DMG: Data = [ - [1666940683.282959][9718:9718] CHIP:DMG: - [1666940683.282962][9718:9718] CHIP:DMG: ], - [1666940683.282964][9718:9718] CHIP:DMG: }, - [1666940683.282966][9718:9718] CHIP:DMG: - [1666940683.282968][9718:9718] CHIP:DMG: }, - [1666940683.282972][9718:9718] CHIP:DMG: - [1666940683.282974][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.282978][9718:9718] CHIP:DMG: { - [1666940683.282980][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.282982][9718:9718] CHIP:DMG: { - [1666940683.282984][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.282986][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.282988][9718:9718] CHIP:DMG: { - [1666940683.282990][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.282992][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.282995][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.282997][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.282999][9718:9718] CHIP:DMG: } - [1666940683.283001][9718:9718] CHIP:DMG: - [1666940683.283003][9718:9718] CHIP:DMG: Data = - [1666940683.283005][9718:9718] CHIP:DMG: { - [1666940683.283008][9718:9718] CHIP:DMG: 0x0 = "Black" (5 chars), - [1666940683.283011][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283013][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283015][9718:9718] CHIP:DMG: - [1666940683.283020][9718:9718] CHIP:DMG: { - [1666940683.283022][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283025][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283027][9718:9718] CHIP:DMG: }, - [1666940683.283030][9718:9718] CHIP:DMG: ], - [1666940683.283032][9718:9718] CHIP:DMG: }, - [1666940683.283034][9718:9718] CHIP:DMG: }, - [1666940683.283037][9718:9718] CHIP:DMG: - [1666940683.283039][9718:9718] CHIP:DMG: }, - [1666940683.283044][9718:9718] CHIP:DMG: - [1666940683.283046][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.283049][9718:9718] CHIP:DMG: { - [1666940683.283051][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.283053][9718:9718] CHIP:DMG: { - [1666940683.283055][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.283057][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.283059][9718:9718] CHIP:DMG: { - [1666940683.283061][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.283064][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.283066][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.283068][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.283070][9718:9718] CHIP:DMG: } - [1666940683.283072][9718:9718] CHIP:DMG: - [1666940683.283074][9718:9718] CHIP:DMG: Data = - [1666940683.283076][9718:9718] CHIP:DMG: { - [1666940683.283079][9718:9718] CHIP:DMG: 0x0 = "Cappuccino" (10 chars), - [1666940683.283081][9718:9718] CHIP:DMG: 0x1 = 4, - [1666940683.283084][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283086][9718:9718] CHIP:DMG: - [1666940683.283088][9718:9718] CHIP:DMG: { - [1666940683.283091][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283093][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283095][9718:9718] CHIP:DMG: }, - [1666940683.283098][9718:9718] CHIP:DMG: ], - [1666940683.283100][9718:9718] CHIP:DMG: }, - [1666940683.283102][9718:9718] CHIP:DMG: }, - [1666940683.283105][9718:9718] CHIP:DMG: - [1666940683.283107][9718:9718] CHIP:DMG: }, - [1666940683.283112][9718:9718] CHIP:DMG: - [1666940683.283114][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.283117][9718:9718] CHIP:DMG: { - [1666940683.283119][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.283121][9718:9718] CHIP:DMG: { - [1666940683.283123][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.283125][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.283128][9718:9718] CHIP:DMG: { - [1666940683.283130][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.283132][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.283134][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.283136][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.283138][9718:9718] CHIP:DMG: } - [1666940683.283141][9718:9718] CHIP:DMG: - [1666940683.283143][9718:9718] CHIP:DMG: Data = - [1666940683.283145][9718:9718] CHIP:DMG: { - [1666940683.283148][9718:9718] CHIP:DMG: 0x0 = "Espresso" (8 chars), - [1666940683.283150][9718:9718] CHIP:DMG: 0x1 = 7, - [1666940683.283152][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283154][9718:9718] CHIP:DMG: - [1666940683.283157][9718:9718] CHIP:DMG: { - [1666940683.283159][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283161][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283164][9718:9718] CHIP:DMG: }, - [1666940683.283167][9718:9718] CHIP:DMG: ], - [1666940683.283169][9718:9718] CHIP:DMG: }, - [1666940683.283171][9718:9718] CHIP:DMG: }, - [1666940683.283174][9718:9718] CHIP:DMG: - [1666940683.283176][9718:9718] CHIP:DMG: }, - [1666940683.283179][9718:9718] CHIP:DMG: - [1666940683.283181][9718:9718] CHIP:DMG: ], - [1666940683.283188][9718:9718] CHIP:DMG: - [1666940683.283190][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940683.283192][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - - ./chip-tool modeselect read current-mode 1 1 - - verify the "current-modes response" on the TH (all-cluster-app) log: - - [1666940720.150375][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940720.150377][9718:9718] CHIP:DMG: { - [1666940720.150379][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940720.150382][9718:9718] CHIP:DMG: [ - [1666940720.150384][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940720.150387][9718:9718] CHIP:DMG: { - [1666940720.150389][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940720.150391][9718:9718] CHIP:DMG: { - [1666940720.150394][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940720.150396][9718:9718] CHIP:DMG: AttributePathIB = - [1666940720.150399][9718:9718] CHIP:DMG: { - [1666940720.150402][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940720.150404][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940720.150406][9718:9718] CHIP:DMG: Attribute = 0x0000_0003, - [1666940720.150408][9718:9718] CHIP:DMG: } - [1666940720.150411][9718:9718] CHIP:DMG: - [1666940720.150414][9718:9718] CHIP:DMG: Data = 0, - [1666940720.150416][9718:9718] CHIP:DMG: }, - [1666940720.150419][9718:9718] CHIP:DMG: - [1666940720.150421][9718:9718] CHIP:DMG: }, - [1666940720.150424][9718:9718] CHIP:DMG: - [1666940720.150426][9718:9718] CHIP:DMG: ], - [1666940720.150429][9718:9718] CHIP:DMG: - [1666940720.150431][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940720.150433][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read standard-namespace 1 1 - - verify the "standard-namespace response" on the TH (all-cluster-app) log: - - 1668497274.561088][9289:9289] CHIP:DMG: ReportDataMessage = - [1668497274.561091][9289:9289] CHIP:DMG: { - [1668497274.561094][9289:9289] CHIP:DMG: AttributeReportIBs = - [1668497274.561100][9289:9289] CHIP:DMG: [ - [1668497274.561103][9289:9289] CHIP:DMG: AttributeReportIB = - [1668497274.561108][9289:9289] CHIP:DMG: { - [1668497274.561111][9289:9289] CHIP:DMG: AttributeDataIB = - [1668497274.561115][9289:9289] CHIP:DMG: { - [1668497274.561119][9289:9289] CHIP:DMG: DataVersion = 0x6c775d5f, - [1668497274.561123][9289:9289] CHIP:DMG: AttributePathIB = - [1668497274.561126][9289:9289] CHIP:DMG: { - [1668497274.561129][9289:9289] CHIP:DMG: Endpoint = 0x1, - [1668497274.561133][9289:9289] CHIP:DMG: Cluster = 0x50, - [1668497274.561137][9289:9289] CHIP:DMG: Attribute = 0x0000_0001, - [1668497274.561142][9289:9289] CHIP:DMG: } - [1668497274.561147][9289:9289] CHIP:DMG: - [1668497274.561153][9289:9289] CHIP:DMG: Data = 0, - [1668497274.561157][9289:9289] CHIP:DMG: }, - [1668497274.561162][9289:9289] CHIP:DMG: - [1668497274.561165][9289:9289] CHIP:DMG: }, - [1668497274.561169][9289:9289] CHIP:DMG: - [1668497274.561172][9289:9289] CHIP:DMG: ], - [1668497274.561177][9289:9289] CHIP:DMG: - [1668497274.561180][9289:9289] CHIP:DMG: SuppressResponse = true, - [1668497274.561183][9289:9289] CHIP:DMG: InteractionModelRevision = 1 - [1668497274.561185][9289:9289] CHIP:DMG: } - - ./chip-tool modeselect read description 1 1 - - verify the "description response" on the TH (all-cluster-app) log: - - [1668497391.858312][9289:9289] CHIP:DMG: ReportDataMessage = - [1668497391.858315][9289:9289] CHIP:DMG: { - [1668497391.858318][9289:9289] CHIP:DMG: AttributeReportIBs = - [1668497391.858324][9289:9289] CHIP:DMG: [ - [1668497391.858327][9289:9289] CHIP:DMG: AttributeReportIB = - [1668497391.858331][9289:9289] CHIP:DMG: { - [1668497391.858334][9289:9289] CHIP:DMG: AttributeDataIB = - [1668497391.858338][9289:9289] CHIP:DMG: { - [1668497391.858342][9289:9289] CHIP:DMG: DataVersion = 0x6c775d5f, - [1668497391.858345][9289:9289] CHIP:DMG: AttributePathIB = - [1668497391.858348][9289:9289] CHIP:DMG: { - [1668497391.858352][9289:9289] CHIP:DMG: Endpoint = 0x1, - [1668497391.858355][9289:9289] CHIP:DMG: Cluster = 0x50, - [1668497391.858359][9289:9289] CHIP:DMG: Attribute = 0x0000_0000, - [1668497391.858363][9289:9289] CHIP:DMG: } - [1668497391.858368][9289:9289] CHIP:DMG: - [1668497391.858372][9289:9289] CHIP:DMG: Data = "Coffee" (6 chars), - [1668497391.858375][9289:9289] CHIP:DMG: }, - [1668497391.858380][9289:9289] CHIP:DMG: - [1668497391.858383][9289:9289] CHIP:DMG: }, - [1668497391.858387][9289:9289] CHIP:DMG: - [1668497391.858390][9289:9289] CHIP:DMG: ], - [1668497391.858395][9289:9289] CHIP:DMG: - [1668497391.858398][9289:9289] CHIP:DMG: SuppressResponse = true, - [1668497391.858403][9289:9289] CHIP:DMG: InteractionModelRevision = 1 - [1668497391.858406][9289:9289] CHIP:DMG: } - disabled: true - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - PICS: MOD.C.AO-READ - verification: | - ./chip-tool modeselect read on-mode 1 1 - - verify the "on-modes response" on the TH (all-cluster-app) log: - [1666940828.515256][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940828.515259][9718:9718] CHIP:DMG: { - [1666940828.515261][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940828.515265][9718:9718] CHIP:DMG: [ - [1666940828.515267][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940828.515272][9718:9718] CHIP:DMG: { - [1666940828.515275][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940828.515277][9718:9718] CHIP:DMG: { - [1666940828.515280][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940828.515282][9718:9718] CHIP:DMG: AttributePathIB = - [1666940828.515285][9718:9718] CHIP:DMG: { - [1666940828.515288][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940828.515290][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940828.515293][9718:9718] CHIP:DMG: Attribute = 0x0000_0005, - [1666940828.515295][9718:9718] CHIP:DMG: } - [1666940828.515298][9718:9718] CHIP:DMG: - [1666940828.515301][9718:9718] CHIP:DMG: Data = NULL - [1666940828.515304][9718:9718] CHIP:DMG: }, - [1666940828.515307][9718:9718] CHIP:DMG: - [1666940828.515309][9718:9718] CHIP:DMG: }, - [1666940828.515312][9718:9718] CHIP:DMG: - [1666940828.515314][9718:9718] CHIP:DMG: ], - [1666940828.515317][9718:9718] CHIP:DMG: - [1666940828.515320][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940828.515322][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read start-up-mode 1 1 - - verify the "start-up-modes response" on the TH (all-cluster-app) log: - - [1666940848.925393][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940848.925396][9718:9718] CHIP:DMG: { - [1666940848.925397][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940848.925401][9718:9718] CHIP:DMG: [ - [1666940848.925403][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940848.925407][9718:9718] CHIP:DMG: { - [1666940848.925410][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940848.925414][9718:9718] CHIP:DMG: { - [1666940848.925416][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940848.925418][9718:9718] CHIP:DMG: AttributePathIB = - [1666940848.925421][9718:9718] CHIP:DMG: { - [1666940848.925423][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940848.925428][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940848.925431][9718:9718] CHIP:DMG: Attribute = 0x0000_0004, - [1666940848.925433][9718:9718] CHIP:DMG: } - [1666940848.925436][9718:9718] CHIP:DMG: - [1666940848.925438][9718:9718] CHIP:DMG: Data = 0, - [1666940848.925440][9718:9718] CHIP:DMG: }, - [1666940848.925443][9718:9718] CHIP:DMG: - [1666940848.925445][9718:9718] CHIP:DMG: }, - [1666940848.925448][9718:9718] CHIP:DMG: - [1666940848.925450][9718:9718] CHIP:DMG: ], - [1666940848.925454][9718:9718] CHIP:DMG: - [1666940848.925456][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940848.925458][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - disabled: true - - - label: - "DUT writes a suitable value to all supported mandatory attributes on - the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AM-WRITE - verification: | - This cluster doesn't have any writable attributes - disabled: true - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AO-WRITE - verification: | - ./chip-tool modeselect write on-mode 0 1 1 - - Verify the "WriteRequestMessage" on TH(all-cluster-app) log: - - WriteRequestMessage = - [1673335946.283857][10561:10561] CHIP:DMG: { - [1673335946.283866][10561:10561] CHIP:DMG: suppressResponse = false, - [1673335946.283878][10561:10561] CHIP:DMG: timedRequest = false, - [1673335946.283887][10561:10561] CHIP:DMG: AttributeDataIBs = - [1673335946.283905][10561:10561] CHIP:DMG: [ - [1673335946.283914][10561:10561] CHIP:DMG: AttributeDataIB = - [1673335946.283926][10561:10561] CHIP:DMG: { - [1673335946.283935][10561:10561] CHIP:DMG: AttributePathIB = - [1673335946.283947][10561:10561] CHIP:DMG: { - [1673335946.283959][10561:10561] CHIP:DMG: Endpoint = 0x1, - [1673335946.283971][10561:10561] CHIP:DMG: Cluster = 0x50, - [1673335946.283983][10561:10561] CHIP:DMG: Attribute = 0x0000_0005, - [1673335946.283994][10561:10561] CHIP:DMG: } - [1673335946.284008][10561:10561] CHIP:DMG: - [1673335946.284022][10561:10561] CHIP:DMG: Data = 0, - [1673335946.284032][10561:10561] CHIP:DMG: }, - [1673335946.284046][10561:10561] CHIP:DMG: - [1673335946.284055][10561:10561] CHIP:DMG: ], - [1673335946.284070][10561:10561] CHIP:DMG: - [1673335946.284081][10561:10561] CHIP:DMG: moreChunkedMessages = false, - [1673335946.284091][10561:10561] CHIP:DMG: InteractionModelRevision = 1 - [1673335946.284099][10561:10561] CHIP:DMG: }, - - ./chip-tool modeselect write start-up-mode 0 1 1 - - Verify the "WriteRequestMessage" on TH(all-cluster-app) log: - - WriteRequestMessage = - [1673336054.600463][10561:10561] CHIP:DMG: { - [1673336054.600470][10561:10561] CHIP:DMG: suppressResponse = false, - [1673336054.600479][10561:10561] CHIP:DMG: timedRequest = false, - [1673336054.600486][10561:10561] CHIP:DMG: AttributeDataIBs = - [1673336054.600501][10561:10561] CHIP:DMG: [ - [1673336054.600509][10561:10561] CHIP:DMG: AttributeDataIB = - [1673336054.600521][10561:10561] CHIP:DMG: { - [1673336054.600531][10561:10561] CHIP:DMG: AttributePathIB = - [1673336054.600544][10561:10561] CHIP:DMG: { - [1673336054.600557][10561:10561] CHIP:DMG: Endpoint = 0x1, - [1673336054.600569][10561:10561] CHIP:DMG: Cluster = 0x50, - [1673336054.600582][10561:10561] CHIP:DMG: Attribute = 0x0000_0004, - [1673336054.600593][10561:10561] CHIP:DMG: } - [1673336054.600608][10561:10561] CHIP:DMG: - [1673336054.600621][10561:10561] CHIP:DMG: Data = 0, - [1673336054.600631][10561:10561] CHIP:DMG: }, - [1673336054.600646][10561:10561] CHIP:DMG: - [1673336054.600656][10561:10561] CHIP:DMG: ], - [1673336054.600673][10561:10561] CHIP:DMG: - [1673336054.600683][10561:10561] CHIP:DMG: moreChunkedMessages = false, - [1673336054.600695][10561:10561] CHIP:DMG: InteractionModelRevision = 1 - [1673336054.600704][10561:10561] CHIP:DMG: }, - disabled: true - - - label: - "Configure TH such that it implements mandatory and none of the - optional attributes of the server-side of the cluster, and that it - also reflects this in global attributes such as FeatureMap and - AttributeList. Commission DUT to TH again" - verification: | - ./chip-tool modeselect read attribute-list 1 1 - - Verify the "Attribute-list response" on the TH (all-cluster-minimal-app) log: - [1666943275.315331][12769:12769] CHIP:DMG: - [1666943275.315365][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943275.315367][12769:12769] CHIP:DMG: { - [1666943275.315369][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943275.315372][12769:12769] CHIP:DMG: [ - [1666943275.315374][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315377][12769:12769] CHIP:DMG: { - [1666943275.315379][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315383][12769:12769] CHIP:DMG: { - [1666943275.315386][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315388][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315390][12769:12769] CHIP:DMG: { - [1666943275.315394][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315397][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315399][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315401][12769:12769] CHIP:DMG: } - [1666943275.315404][12769:12769] CHIP:DMG: - [1666943275.315406][12769:12769] CHIP:DMG: Data = [ - [1666943275.315409][12769:12769] CHIP:DMG: - [1666943275.315411][12769:12769] CHIP:DMG: ], - [1666943275.315413][12769:12769] CHIP:DMG: }, - [1666943275.315416][12769:12769] CHIP:DMG: - [1666943275.315418][12769:12769] CHIP:DMG: }, - [1666943275.315423][12769:12769] CHIP:DMG: - [1666943275.315424][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315429][12769:12769] CHIP:DMG: { - [1666943275.315431][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315434][12769:12769] CHIP:DMG: { - [1666943275.315436][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315438][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315440][12769:12769] CHIP:DMG: { - [1666943275.315443][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315445][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315448][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315450][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315452][12769:12769] CHIP:DMG: } - [1666943275.315455][12769:12769] CHIP:DMG: - [1666943275.315457][12769:12769] CHIP:DMG: Data = 0, - [1666943275.315459][12769:12769] CHIP:DMG: }, - [1666943275.315462][12769:12769] CHIP:DMG: - [1666943275.315464][12769:12769] CHIP:DMG: }, - [1666943275.315469][12769:12769] CHIP:DMG: - [1666943275.315470][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315474][12769:12769] CHIP:DMG: { - [1666943275.315476][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315478][12769:12769] CHIP:DMG: { - [1666943275.315481][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315483][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315485][12769:12769] CHIP:DMG: { - [1666943275.315487][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315490][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315492][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315494][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315497][12769:12769] CHIP:DMG: } - [1666943275.315499][12769:12769] CHIP:DMG: - [1666943275.315501][12769:12769] CHIP:DMG: Data = 1, - [1666943275.315504][12769:12769] CHIP:DMG: }, - [1666943275.315506][12769:12769] CHIP:DMG: - [1666943275.315508][12769:12769] CHIP:DMG: }, - [1666943275.315512][12769:12769] CHIP:DMG: - [1666943275.315514][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315518][12769:12769] CHIP:DMG: { - [1666943275.315519][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315522][12769:12769] CHIP:DMG: { - [1666943275.315524][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315526][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315530][12769:12769] CHIP:DMG: { - [1666943275.315532][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315534][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315537][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315539][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315541][12769:12769] CHIP:DMG: } - [1666943275.315543][12769:12769] CHIP:DMG: - [1666943275.315546][12769:12769] CHIP:DMG: Data = 2, - [1666943275.315548][12769:12769] CHIP:DMG: }, - [1666943275.315551][12769:12769] CHIP:DMG: - [1666943275.315553][12769:12769] CHIP:DMG: }, - [1666943275.315558][12769:12769] CHIP:DMG: - [1666943275.315560][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315564][12769:12769] CHIP:DMG: { - [1666943275.315566][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315568][12769:12769] CHIP:DMG: { - [1666943275.315571][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315573][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315575][12769:12769] CHIP:DMG: { - [1666943275.315577][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315580][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315582][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315585][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315587][12769:12769] CHIP:DMG: } - [1666943275.315590][12769:12769] CHIP:DMG: - [1666943275.315592][12769:12769] CHIP:DMG: Data = 3, - [1666943275.315594][12769:12769] CHIP:DMG: }, - [1666943275.315597][12769:12769] CHIP:DMG: - [1666943275.315599][12769:12769] CHIP:DMG: }, - [1666943275.315604][12769:12769] CHIP:DMG: - [1666943275.315605][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315609][12769:12769] CHIP:DMG: { - [1666943275.315611][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315613][12769:12769] CHIP:DMG: { - [1666943275.315616][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315617][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315621][12769:12769] CHIP:DMG: { - [1666943275.315623][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315625][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315628][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315630][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315632][12769:12769] CHIP:DMG: } - [1666943275.315635][12769:12769] CHIP:DMG: - [1666943275.315637][12769:12769] CHIP:DMG: Data = 65528, - [1666943275.315639][12769:12769] CHIP:DMG: }, - [1666943275.315642][12769:12769] CHIP:DMG: - [1666943275.315644][12769:12769] CHIP:DMG: }, - [1666943275.315648][12769:12769] CHIP:DMG: - [1666943275.315650][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315654][12769:12769] CHIP:DMG: { - [1666943275.315656][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315658][12769:12769] CHIP:DMG: { - [1666943275.315660][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315662][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315664][12769:12769] CHIP:DMG: { - [1666943275.315667][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315669][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315671][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315673][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315676][12769:12769] CHIP:DMG: } - [1666943275.315679][12769:12769] CHIP:DMG: - [1666943275.315681][12769:12769] CHIP:DMG: Data = 65529, - [1666943275.315683][12769:12769] CHIP:DMG: }, - [1666943275.315686][12769:12769] CHIP:DMG: - [1666943275.315688][12769:12769] CHIP:DMG: }, - [1666943275.315692][12769:12769] CHIP:DMG: - [1666943275.315694][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315698][12769:12769] CHIP:DMG: { - [1666943275.315700][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315703][12769:12769] CHIP:DMG: { - [1666943275.315705][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315707][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315710][12769:12769] CHIP:DMG: { - [1666943275.315712][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315714][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315716][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315719][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315721][12769:12769] CHIP:DMG: } - [1666943275.315723][12769:12769] CHIP:DMG: - [1666943275.315726][12769:12769] CHIP:DMG: Data = 65531, - [1666943275.315728][12769:12769] CHIP:DMG: }, - [1666943275.315730][12769:12769] CHIP:DMG: - [1666943275.315732][12769:12769] CHIP:DMG: }, - [1666943275.315737][12769:12769] CHIP:DMG: - [1666943275.315738][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315742][12769:12769] CHIP:DMG: { - [1666943275.315744][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315746][12769:12769] CHIP:DMG: { - [1666943275.315748][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315750][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315752][12769:12769] CHIP:DMG: { - [1666943275.315755][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315757][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315759][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315762][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315764][12769:12769] CHIP:DMG: } - [1666943275.315767][12769:12769] CHIP:DMG: - [1666943275.315769][12769:12769] CHIP:DMG: Data = 65532, - [1666943275.315771][12769:12769] CHIP:DMG: }, - [1666943275.315775][12769:12769] CHIP:DMG: - [1666943275.315777][12769:12769] CHIP:DMG: }, - [1666943275.315781][12769:12769] CHIP:DMG: - [1666943275.315783][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943275.315786][12769:12769] CHIP:DMG: { - [1666943275.315788][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943275.315792][12769:12769] CHIP:DMG: { - [1666943275.315794][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943275.315796][12769:12769] CHIP:DMG: AttributePathIB = - [1666943275.315798][12769:12769] CHIP:DMG: { - [1666943275.315800][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943275.315802][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943275.315805][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943275.315807][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943275.315811][12769:12769] CHIP:DMG: } - [1666943275.315814][12769:12769] CHIP:DMG: - [1666943275.315817][12769:12769] CHIP:DMG: Data = 65533, - [1666943275.315819][12769:12769] CHIP:DMG: }, - [1666943275.315822][12769:12769] CHIP:DMG: - [1666943275.315824][12769:12769] CHIP:DMG: }, - [1666943275.315826][12769:12769] CHIP:DMG: - [1666943275.315828][12769:12769] CHIP:DMG: ], - [1666943275.315839][12769:12769] CHIP:DMG: - [1666943275.315841][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943275.315843][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943275.315845][12769:12769] CHIP:DMG: } - - ./chip-tool modeselect read feature-map 1 1 - - Verify the " Feature-map " on the TH (all-cluster-minimal-app) log: - [1666943338.908026][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943338.908028][12769:12769] CHIP:DMG: { - [1666943338.908031][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943338.908035][12769:12769] CHIP:DMG: [ - [1666943338.908038][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943338.908042][12769:12769] CHIP:DMG: { - [1666943338.908045][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943338.908048][12769:12769] CHIP:DMG: { - [1666943338.908051][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943338.908054][12769:12769] CHIP:DMG: AttributePathIB = - [1666943338.908057][12769:12769] CHIP:DMG: { - [1666943338.908060][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943338.908064][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943338.908067][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666943338.908070][12769:12769] CHIP:DMG: } - [1666943338.908074][12769:12769] CHIP:DMG: - [1666943338.908077][12769:12769] CHIP:DMG: Data = 0, - [1666943338.908080][12769:12769] CHIP:DMG: }, - [1666943338.908084][12769:12769] CHIP:DMG: - [1666943338.908086][12769:12769] CHIP:DMG: }, - [1666943338.908090][12769:12769] CHIP:DMG: - [1666943338.908092][12769:12769] CHIP:DMG: ], - [1666943338.908096][12769:12769] CHIP:DMG: - [1666943338.908099][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943338.908102][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943338.908104][12769:12769] CHIP:DMG: } - - ./chip-tool modeselect read supported-modes 1 1 - - Verify the "Supported-modes response" on the TH (all-cluster-minimal-app) log: - 1666943362.813636][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943362.813638][12769:12769] CHIP:DMG: { - [1666943362.813640][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943362.813643][12769:12769] CHIP:DMG: [ - [1666943362.813645][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813650][12769:12769] CHIP:DMG: { - [1666943362.813652][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813655][12769:12769] CHIP:DMG: { - [1666943362.813657][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813659][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813662][12769:12769] CHIP:DMG: { - [1666943362.813664][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813666][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813669][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813671][12769:12769] CHIP:DMG: } - [1666943362.813674][12769:12769] CHIP:DMG: - [1666943362.813676][12769:12769] CHIP:DMG: Data = [ - [1666943362.813679][12769:12769] CHIP:DMG: - [1666943362.813681][12769:12769] CHIP:DMG: ], - [1666943362.813683][12769:12769] CHIP:DMG: }, - [1666943362.813686][12769:12769] CHIP:DMG: - [1666943362.813688][12769:12769] CHIP:DMG: }, - [1666943362.813692][12769:12769] CHIP:DMG: - [1666943362.813694][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813699][12769:12769] CHIP:DMG: { - [1666943362.813701][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813703][12769:12769] CHIP:DMG: { - [1666943362.813705][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813707][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813709][12769:12769] CHIP:DMG: { - [1666943362.813711][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813714][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813716][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813719][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813721][12769:12769] CHIP:DMG: } - [1666943362.813725][12769:12769] CHIP:DMG: - [1666943362.813727][12769:12769] CHIP:DMG: Data = - [1666943362.813729][12769:12769] CHIP:DMG: { - [1666943362.813732][12769:12769] CHIP:DMG: 0x0 = "Black" (5 chars), - [1666943362.813735][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813737][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813740][12769:12769] CHIP:DMG: - [1666943362.813742][12769:12769] CHIP:DMG: { - [1666943362.813745][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813748][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813750][12769:12769] CHIP:DMG: }, - [1666943362.813752][12769:12769] CHIP:DMG: ], - [1666943362.813755][12769:12769] CHIP:DMG: }, - [1666943362.813756][12769:12769] CHIP:DMG: }, - [1666943362.813760][12769:12769] CHIP:DMG: - [1666943362.813762][12769:12769] CHIP:DMG: }, - [1666943362.813768][12769:12769] CHIP:DMG: - [1666943362.813770][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813775][12769:12769] CHIP:DMG: { - [1666943362.813776][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813779][12769:12769] CHIP:DMG: { - [1666943362.813781][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813783][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813786][12769:12769] CHIP:DMG: { - [1666943362.813788][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813790][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813793][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813795][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813797][12769:12769] CHIP:DMG: } - [1666943362.813801][12769:12769] CHIP:DMG: - [1666943362.813803][12769:12769] CHIP:DMG: Data = - [1666943362.813805][12769:12769] CHIP:DMG: { - [1666943362.813807][12769:12769] CHIP:DMG: 0x0 = "Cappuccino" (10 chars), - [1666943362.813810][12769:12769] CHIP:DMG: 0x1 = 4, - [1666943362.813812][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813814][12769:12769] CHIP:DMG: - [1666943362.813817][12769:12769] CHIP:DMG: { - [1666943362.813820][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813823][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813826][12769:12769] CHIP:DMG: }, - [1666943362.813828][12769:12769] CHIP:DMG: ], - [1666943362.813830][12769:12769] CHIP:DMG: }, - [1666943362.813832][12769:12769] CHIP:DMG: }, - [1666943362.813836][12769:12769] CHIP:DMG: - [1666943362.813838][12769:12769] CHIP:DMG: }, - [1666943362.813844][12769:12769] CHIP:DMG: - [1666943362.813846][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813850][12769:12769] CHIP:DMG: { - [1666943362.813852][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813855][12769:12769] CHIP:DMG: { - [1666943362.813857][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813860][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813862][12769:12769] CHIP:DMG: { - [1666943362.813864][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813866][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813869][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813871][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813873][12769:12769] CHIP:DMG: } - [1666943362.813876][12769:12769] CHIP:DMG: - [1666943362.813878][12769:12769] CHIP:DMG: Data = - [1666943362.813881][12769:12769] CHIP:DMG: { - [1666943362.813883][12769:12769] CHIP:DMG: 0x0 = "Espresso" (8 chars), - [1666943362.813886][12769:12769] CHIP:DMG: 0x1 = 7, - [1666943362.813888][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813890][12769:12769] CHIP:DMG: - [1666943362.813893][12769:12769] CHIP:DMG: { - [1666943362.813895][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813898][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813900][12769:12769] CHIP:DMG: }, - [1666943362.813903][12769:12769] CHIP:DMG: ], - [1666943362.813905][12769:12769] CHIP:DMG: }, - [1666943362.813907][12769:12769] CHIP:DMG: }, - [1666943362.813911][12769:12769] CHIP:DMG: - [1666943362.813913][12769:12769] CHIP:DMG: }, - [1666943362.813917][12769:12769] CHIP:DMG: - [1666943362.813918][12769:12769] CHIP:DMG: ], - [1666943362.813926][12769:12769] CHIP:DMG: - [1666943362.813928][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943362.813931][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943362.813934][12769:12769] CHIP:DMG: } - [1666943362.813936][12769:12769] CHIP:DMG: - - ./chip-tool modeselect read current-mode 1 1 - - Verify the "Current-modes response" on the TH (all-cluster-minimal-app) log: - 1666943427.104790][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943427.104798][12769:12769] CHIP:DMG: { - [1666943427.104804][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943427.104814][12769:12769] CHIP:DMG: [ - [1666943427.104820][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943427.104838][12769:12769] CHIP:DMG: { - [1666943427.104846][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943427.104858][12769:12769] CHIP:DMG: { - [1666943427.104869][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943427.104880][12769:12769] CHIP:DMG: AttributePathIB = - [1666943427.104891][12769:12769] CHIP:DMG: { - [1666943427.104904][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943427.104916][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943427.104931][12769:12769] CHIP:DMG: Attribute = 0x0000_0003, - [1666943427.104939][12769:12769] CHIP:DMG: } - [1666943427.104948][12769:12769] CHIP:DMG: - [1666943427.104956][12769:12769] CHIP:DMG: Data = 0, - [1666943427.104963][12769:12769] CHIP:DMG: }, - [1666943427.104974][12769:12769] CHIP:DMG: - [1666943427.104981][12769:12769] CHIP:DMG: }, - [1666943427.104991][12769:12769] CHIP:DMG: - [1666943427.105001][12769:12769] CHIP:DMG: ], - [1666943427.105017][12769:12769] CHIP:DMG: - [1666943427.105027][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943427.105037][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943427.105045][12769:12769] CHIP:DMG: } - - ./chip-tool modeselect read standard-namespace 1 1 - - Verify the "Standard-namespace response" on the TH (all-cluster-minimal-app) log: - - [1666943453.966995][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943453.966997][12769:12769] CHIP:DMG: { - [1666943453.966999][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943453.967003][12769:12769] CHIP:DMG: [ - [1666943453.967005][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943453.967008][12769:12769] CHIP:DMG: { - [1666943453.967010][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943453.967014][12769:12769] CHIP:DMG: { - [1666943453.967017][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943453.967019][12769:12769] CHIP:DMG: AttributePathIB = - [1666943453.967021][12769:12769] CHIP:DMG: { - [1666943453.967025][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943453.967027][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943453.967029][12769:12769] CHIP:DMG: Attribute = 0x0000_0001, - [1666943453.967033][12769:12769] CHIP:DMG: } - [1666943453.967035][12769:12769] CHIP:DMG: - [1666943453.967038][12769:12769] CHIP:DMG: Data = 0, - [1666943453.967040][12769:12769] CHIP:DMG: }, - [1666943453.967043][12769:12769] CHIP:DMG: - [1666943453.967045][12769:12769] CHIP:DMG: }, - [1666943453.967047][12769:12769] CHIP:DMG: - [1666943453.967050][12769:12769] CHIP:DMG: ], - [1666943453.967053][12769:12769] CHIP:DMG: - [1666943453.967055][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943453.967057][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read description 1 1 - - Verify the "Description response" on the TH (all-cluster-minimal-app) log: - [1666941093.845092][9718:9718] CHIP:DMG: ReportDataMessage = - [1666941093.845094][9718:9718] CHIP:DMG: { - [1666941093.845096][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666941093.845099][9718:9718] CHIP:DMG: [ - [1666941093.845101][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941093.845105][9718:9718] CHIP:DMG: { - [1666941093.845107][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941093.845110][9718:9718] CHIP:DMG: { - [1666941093.845112][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941093.845115][9718:9718] CHIP:DMG: AttributePathIB = - [1666941093.845117][9718:9718] CHIP:DMG: { - [1666941093.845119][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941093.845122][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941093.845124][9718:9718] CHIP:DMG: Attribute = 0x0000_0000, - [1666941093.845126][9718:9718] CHIP:DMG: } - [1666941093.845129][9718:9718] CHIP:DMG: - [1666941093.845132][9718:9718] CHIP:DMG: Data = "Coffee" (6 chars), - [1666941093.845134][9718:9718] CHIP:DMG: }, - [1666941093.845137][9718:9718] CHIP:DMG: - [1666941093.845139][9718:9718] CHIP:DMG: }, - [1666941093.845142][9718:9718] CHIP:DMG: - [1666941093.845144][9718:9718] CHIP:DMG: ], - [1666941093.845147][9718:9718] CHIP:DMG: - [1666941093.845149][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666941093.845152][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - disabled: true - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - PICS: MOD.C.AO-READ - verification: | - TH all-clusters-minimal-app does not support optional attributes - - ./chip-tool modeselect read on-mode 1 1 - ./chip-tool modeselect read start-up-mode 1 1 - - status = 0x86 (UNSUPPORTED_ATTRIBUTE), - disabled: true - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AO-WRITE - verification: | - ./chip-tool modeselect write on-mode 0 1 1 - ./chip-tool modeselect write start-up-mode 0 1 1 - - status = 0x86 (UNSUPPORTED_ATTRIBUTE), - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml index 34636d41d62773..8aa2b89550c0ee 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml @@ -16,7 +16,7 @@ name: 80.2.1. [TC-MOD-2.1] ChangeToMode Verification (DUT as Server) PICS: - - MOD.S.C00.Rsp + - MOD.S config: nodeId: 0x12344321 @@ -29,12 +29,18 @@ tests: This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command disabled: true - - label: "TH reads the SupportedModes attribute from the DUT" + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the SupportedModes attribute." PICS: MOD.S.A0002 verification: | ./chip-tool modeselect read supported-modes 1 1 - Verify on TH(chip-tool) log SupportedModes provides a list of modes and each mode should be a struct containing a Label , Mode Number and SemanticTags. Also each entry in the semantics tag list, are structs containing a value field and manufacturer code. All of these values should be no larger than 16 bits and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 @@ -70,12 +76,17 @@ tests: [1649677252.376252][10804:10809] CHIP:TOO: } disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - Verify on TH(chip-tool), Current modes provides mode number for usage in steps 3 and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool), Current modes attribute value is an integer value. + - save the value as old_current_mode_dut + - select a value from supported_modes_dut, different from old_current_mode_dut, and save it as new_mode_th. + - select a value which is NOT in supported_modes_dut and save it as invalid_mode_th + + Note : Below is the sample log provided for the raspi platform [1649678800.298128][10854:10861] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 @@ -83,14 +94,16 @@ tests: disabled: true - label: - "TH sends a ChangeToMode command to the DUT with a integer from the - list in step 1,but different from the integer from step 2" + "TH sends a ChangeToMode command to the DUT with NewMode set to + old_current_mode_dut [Petru] note that currently this constraint is + not in the spec. The unapproved proposal is here: + https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/7096 + Until that's approved, please skip this step." PICS: MOD.S.C00.Rsp verification: | - ./chip-tool modeselect change-to-mode 4 1 1 - - Verify on TH(chip-tool) log,shows successful status response and below is the sample log provided for the raspi platform: + ./chip-tool modeselect change-to-mode 0 1 1 + Verify on TH(chip-tool) log, DUT responds with a FAILURE (value 0x01) status response and below is the sample log provided for the raspi platform: [1649677293.280207][10810:10815] CHIP:DMG: StatusIB = [1649677293.280283][10810:10815] CHIP:DMG: { @@ -98,27 +111,67 @@ tests: [1649677293.280421][10810:10815] CHIP:DMG: }, disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: + "TH sends a ChangeToMode command to the DUT with NewMode set to + new_mode_th" + PICS: MOD.S.C00.Rsp + verification: | + ./chip-tool modeselect change-to-mode 4 1 1 + + Verify on TH(chip-tool) log, DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1685017925.030090][16218:16220] CHIP:DMG: CommandStatusIB = + [1685017925.030093][16218:16220] CHIP:DMG: { + [1685017925.030096][16218:16220] CHIP:DMG: CommandPathIB = + [1685017925.030099][16218:16220] CHIP:DMG: { + [1685017925.030102][16218:16220] CHIP:DMG: EndpointId = 0x1, + [1685017925.030106][16218:16220] CHIP:DMG: ClusterId = 0x50, + [1685017925.030109][16218:16220] CHIP:DMG: CommandId = 0x0, + [1685017925.030112][16218:16220] CHIP:DMG: }, + [1685017925.030117][16218:16220] CHIP:DMG: + [1685017925.030121][16218:16220] CHIP:DMG: StatusIB = + [1685017925.030126][16218:16220] CHIP:DMG: { + [1685017925.030129][16218:16220] CHIP:DMG: status = 0x00 (SUCCESS), + [1685017925.030133][16218:16220] CHIP:DMG: }, + [1685017925.030138][16218:16220] CHIP:DMG: + disabled: true + + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - Verify on TH(chip-tool), Current modes attribute value is same as value provided in step 3a, not the integer from step 2 and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool), Current modes attribute value is an integer and equal to new_mode_th, below is the sample log provided for the raspi platform: - [1649678800.298128][10854:10861] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - - [1649678800.298279][10854:10861] CHIP:TOO: CurrentMode: 4 + [1685017991.905343][16336:16338] CHIP:DMG: ], + [1685017991.905348][16336:16338] CHIP:DMG: + [1685017991.905351][16336:16338] CHIP:DMG: SuppressResponse = true, + [1685017991.905353][16336:16338] CHIP:DMG: InteractionModelRevision = 1 + [1685017991.905356][16336:16338] CHIP:DMG: } + [1685017991.905393][16336:16338] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3673378954 + [1685017991.905407][16336:16338] CHIP:TOO: CurrentMode: 4 disabled: true - label: - "TH sends a Change to Mode command to the DUT with a integer that is - not in the list in step 1." + "TH sends a ChangeToMode command to the DUT with NewMode set to + invalid_mode_th" PICS: MOD.S.C00.Rsp verification: | - ./chip-tool modeselect change-to-mode 2 1 1 - - Verify on TH(chip-tool)logs, Change to Mode Command responds with a INVALID_COMMAND (hex value 0x85/decimal 133) and below is the sample log provided for the raspi platform: - - CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x85 - CHIP:TOO: Error: IM Error 0x00000585: General error: 0x85 (INVALID_COMMAND) + ./chip-tool modeselect change-to-mode 5 1 1 + + Verify on TH(chip-tool) log, DUT responds with a INVALID_COMMAND (value 0x85) status response and below is the sample log provided for the raspi platform: + + [1685018023.768417][16341:16343] CHIP:DMG: StatusIB = + [1685018023.768429][16341:16343] CHIP:DMG: { + [1685018023.768441][16341:16343] CHIP:DMG: status = 0x85 (INVALID_COMMAND), + [1685018023.768452][16341:16343] CHIP:DMG: }, + [1685018023.768464][16341:16343] CHIP:DMG: + [1685018023.768474][16341:16343] CHIP:DMG: }, + [1685018023.768490][16341:16343] CHIP:DMG: + [1685018023.768499][16341:16343] CHIP:DMG: }, + [1685018023.768515][16341:16343] CHIP:DMG: + [1685018023.768523][16341:16343] CHIP:DMG: ], + [1685018023.768540][16341:16343] CHIP:DMG: + [1685018023.768549][16341:16343] CHIP:DMG: InteractionModelRevision = 1 + [1685018023.768558][16341:16343] CHIP:DMG: }, disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml deleted file mode 100644 index ce193ae93db249..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml +++ /dev/null @@ -1,194 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 80.2.2. [TC-MOD-2.2] ChangeToMode Verification (DUT as Client) - -PICS: - - MOD.C.C00.Tx - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command - disabled: true - - - label: "DUT reads the SupportedModes attribute from the TH" - PICS: MOD.C.A0002 - verification: | - ./chip-tool modeselect read supported-modes 1 1 - - Verify that the TH response provides a list of supported modes on the TH (all-cluster-app) log: - - [1666941141.001603][9718:9718] CHIP:DMG: - [1666941141.001625][9718:9718] CHIP:DMG: ReportDataMessage = - [1666941141.001627][9718:9718] CHIP:DMG: { - [1666941141.001629][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666941141.001632][9718:9718] CHIP:DMG: [ - [1666941141.001634][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941141.001637][9718:9718] CHIP:DMG: { - [1666941141.001639][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941141.001642][9718:9718] CHIP:DMG: { - [1666941141.001644][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941141.001646][9718:9718] CHIP:DMG: AttributePathIB = - [1666941141.001648][9718:9718] CHIP:DMG: { - [1666941141.001650][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941141.001653][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941141.001655][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666941141.001657][9718:9718] CHIP:DMG: } - [1666941141.001659][9718:9718] CHIP:DMG: - [1666941141.001662][9718:9718] CHIP:DMG: Data = [ - [1666941141.001664][9718:9718] CHIP:DMG: - [1666941141.001666][9718:9718] CHIP:DMG: ], - [1666941141.001668][9718:9718] CHIP:DMG: }, - [1666941141.001671][9718:9718] CHIP:DMG: - [1666941141.001673][9718:9718] CHIP:DMG: }, - [1666941141.001677][9718:9718] CHIP:DMG: - [1666941141.001679][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941141.001683][9718:9718] CHIP:DMG: { - [1666941141.001684][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941141.001687][9718:9718] CHIP:DMG: { - [1666941141.001689][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941141.001691][9718:9718] CHIP:DMG: AttributePathIB = - [1666941141.001693][9718:9718] CHIP:DMG: { - [1666941141.001695][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941141.001697][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941141.001699][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666941141.001701][9718:9718] CHIP:DMG: ListIndex = Null, - [1666941141.001704][9718:9718] CHIP:DMG: } - [1666941141.001706][9718:9718] CHIP:DMG: - [1666941141.001708][9718:9718] CHIP:DMG: Data = - [1666941141.001710][9718:9718] CHIP:DMG: { - [1666941141.001713][9718:9718] CHIP:DMG: 0x0 = "Black" (5 chars), - [1666941141.001715][9718:9718] CHIP:DMG: 0x1 = 0, - [1666941141.001718][9718:9718] CHIP:DMG: 0x2 = [ - [1666941141.001720][9718:9718] CHIP:DMG: - [1666941141.001722][9718:9718] CHIP:DMG: { - [1666941141.001725][9718:9718] CHIP:DMG: 0x0 = 0, - [1666941141.001727][9718:9718] CHIP:DMG: 0x1 = 0, - [1666941141.001730][9718:9718] CHIP:DMG: }, - [1666941141.001732][9718:9718] CHIP:DMG: ], - [1666941141.001734][9718:9718] CHIP:DMG: }, - [1666941141.001736][9718:9718] CHIP:DMG: }, - [1666941141.001739][9718:9718] CHIP:DMG: - [1666941141.001741][9718:9718] CHIP:DMG: }, - [1666941141.001747][9718:9718] CHIP:DMG: - [1666941141.001748][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941141.001752][9718:9718] CHIP:DMG: { - [1666941141.001754][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941141.001756][9718:9718] CHIP:DMG: { - [1666941141.001758][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941141.001760][9718:9718] CHIP:DMG: AttributePathIB = - [1666941141.001762][9718:9718] CHIP:DMG: { - [1666941141.001764][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941141.001767][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941141.001769][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666941141.001771][9718:9718] CHIP:DMG: ListIndex = Null, - [1666941141.001773][9718:9718] CHIP:DMG: } - [1666941141.001775][9718:9718] CHIP:DMG: - [1666941141.001777][9718:9718] CHIP:DMG: Data = - [1666941141.001780][9718:9718] CHIP:DMG: { - [1666941141.001782][9718:9718] CHIP:DMG: 0x0 = "Cappuccino" (10 chars), - [1666941141.001784][9718:9718] CHIP:DMG: 0x1 = 4, - [1666941141.001787][9718:9718] CHIP:DMG: 0x2 = [ - [1666941141.001789][9718:9718] CHIP:DMG: - [1666941141.001791][9718:9718] CHIP:DMG: { - [1666941141.001794][9718:9718] CHIP:DMG: 0x0 = 0, - [1666941141.001796][9718:9718] CHIP:DMG: 0x1 = 0, - [1666941141.001799][9718:9718] CHIP:DMG: }, - [1666941141.001801][9718:9718] CHIP:DMG: ], - [1666941141.001803][9718:9718] CHIP:DMG: }, - [1666941141.001805][9718:9718] CHIP:DMG: }, - [1666941141.001808][9718:9718] CHIP:DMG: - [1666941141.001810][9718:9718] CHIP:DMG: }, - [1666941141.001815][9718:9718] CHIP:DMG: - [1666941141.001817][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941141.001820][9718:9718] CHIP:DMG: { - [1666941141.001822][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941141.001824][9718:9718] CHIP:DMG: { - [1666941141.001826][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941141.001828][9718:9718] CHIP:DMG: AttributePathIB = - [1666941141.001831][9718:9718] CHIP:DMG: { - [1666941141.001833][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941141.001835][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941141.001837][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666941141.001839][9718:9718] CHIP:DMG: ListIndex = Null, - [1666941141.001841][9718:9718] CHIP:DMG: } - [1666941141.001844][9718:9718] CHIP:DMG: - [1666941141.001846][9718:9718] CHIP:DMG: Data = - [1666941141.001848][9718:9718] CHIP:DMG: { - [1666941141.001850][9718:9718] CHIP:DMG: 0x0 = "Espresso" (8 chars), - [1666941141.001853][9718:9718] CHIP:DMG: 0x1 = 7, - [1666941141.001855][9718:9718] CHIP:DMG: 0x2 = [ - [1666941141.001857][9718:9718] CHIP:DMG: - [1666941141.001860][9718:9718] CHIP:DMG: { - [1666941141.001862][9718:9718] CHIP:DMG: 0x0 = 0, - [1666941141.001864][9718:9718] CHIP:DMG: 0x1 = 0, - [1666941141.001867][9718:9718] CHIP:DMG: }, - [1666941141.001870][9718:9718] CHIP:DMG: ], - [1666941141.001872][9718:9718] CHIP:DMG: }, - [1666941141.001874][9718:9718] CHIP:DMG: }, - [1666941141.001878][9718:9718] CHIP:DMG: - [1666941141.001880][9718:9718] CHIP:DMG: }, - [1666941141.001883][9718:9718] CHIP:DMG: - [1666941141.001885][9718:9718] CHIP:DMG: ], - [1666941141.001891][9718:9718] CHIP:DMG: - [1666941141.001893][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666941141.001895][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - [1666941141.001897][9718:9718] CHIP:DMG: } - disabled: true - - - label: - "DUT sends a ChangeToMode command to the TH with a integer from the - list in step 1." - PICS: MOD.C.C00.Tx - verification: | - ./chip-tool modeselect change-to-mode 4 1 1 - - Verify TH responds with a successful (value 0x00) status response on the TH (all-cluster-app) log: - - [1666941165.052169][9718:9718] CHIP:DMG: InvokeResponseMessage = - [1666941165.052172][9718:9718] CHIP:DMG: { - [1666941165.052174][9718:9718] CHIP:DMG: suppressResponse = false, - [1666941165.052177][9718:9718] CHIP:DMG: InvokeResponseIBs = - [1666941165.052179][9718:9718] CHIP:DMG: [ - [1666941165.052181][9718:9718] CHIP:DMG: InvokeResponseIB = - [1666941165.052185][9718:9718] CHIP:DMG: { - [1666941165.052187][9718:9718] CHIP:DMG: CommandStatusIB = - [1666941165.052190][9718:9718] CHIP:DMG: { - [1666941165.052192][9718:9718] CHIP:DMG: CommandPathIB = - [1666941165.052195][9718:9718] CHIP:DMG: { - [1666941165.052197][9718:9718] CHIP:DMG: EndpointId = 0x1, - [1666941165.052200][9718:9718] CHIP:DMG: ClusterId = 0x50, - [1666941165.052202][9718:9718] CHIP:DMG: CommandId = 0x0, - [1666941165.052205][9718:9718] CHIP:DMG: }, - [1666941165.052208][9718:9718] CHIP:DMG: - [1666941165.052210][9718:9718] CHIP:DMG: StatusIB = - [1666941165.052213][9718:9718] CHIP:DMG: { - [1666941165.052216][9718:9718] CHIP:DMG: status = 0x00 (SUCCESS), - [1666941165.052218][9718:9718] CHIP:DMG: }, - [1666941165.052220][9718:9718] CHIP:DMG: - [1666941165.052223][9718:9718] CHIP:DMG: }, - [1666941165.052226][9718:9718] CHIP:DMG: - [1666941165.052227][9718:9718] CHIP:DMG: }, - [1666941165.052231][9718:9718] CHIP:DMG: - [1666941165.052233][9718:9718] CHIP:DMG: ], - [1666941165.052235][9718:9718] CHIP:DMG: - [1666941165.052237][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_3.yaml new file mode 100644 index 00000000000000..fd0914eb5fda43 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_MOD_2_3.yaml @@ -0,0 +1,129 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default + +name: 80.4.1.[TC-MOD-2.3] ChangeToModeWithStatus Verification DUT as Server + +PICS: + - MOD.S + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the SupportedModes attribute." + PICS: MOD.S.A0002 + verification: | + ./chip-tool modeselect read supported-modes 1 1 + + On TH(chip-tool) log, Verify SupportedModes attribute should contains two or more ModeOptionsStruct entries and save the Mode field values as supported_modes_dut, below is the sample log provided for the raspi platform: + + [1685018204.991818][16390:16392] CHIP:DMG: } + [1685018204.992182][16390:16392] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3673378954 + [1685018204.992279][16390:16392] CHIP:TOO: SupportedModes: 3 entries + [1685018204.992320][16390:16392] CHIP:TOO: [1]: { + [1685018204.992331][16390:16392] CHIP:TOO: Label: Black + [1685018204.992350][16390:16392] CHIP:TOO: Mode: 0 + [1685018204.992376][16390:16392] CHIP:TOO: SemanticTags: 1 entries + [1685018204.992408][16390:16392] CHIP:TOO: [1]: { + [1685018204.992420][16390:16392] CHIP:TOO: MfgCode: 0 + [1685018204.992430][16390:16392] CHIP:TOO: Value: 0 + [1685018204.992440][16390:16392] CHIP:TOO: } + [1685018204.992452][16390:16392] CHIP:TOO: } + [1685018204.992482][16390:16392] CHIP:TOO: [2]: { + [1685018204.992492][16390:16392] CHIP:TOO: Label: Cappuccino + [1685018204.992504][16390:16392] CHIP:TOO: Mode: 4 + [1685018204.992525][16390:16392] CHIP:TOO: SemanticTags: 1 entries + [1685018204.992547][16390:16392] CHIP:TOO: [1]: { + [1685018204.992558][16390:16392] CHIP:TOO: MfgCode: 0 + [1685018204.992567][16390:16392] CHIP:TOO: Value: 0 + [1685018204.992578][16390:16392] CHIP:TOO: } + [1685018204.992588][16390:16392] CHIP:TOO: } + [1685018204.992610][16390:16392] CHIP:TOO: [3]: { + [1685018204.992619][16390:16392] CHIP:TOO: Label: Espresso + [1685018204.992628][16390:16392] CHIP:TOO: Mode: 7 + [1685018204.992641][16390:16392] CHIP:TOO: SemanticTags: 1 entries + [1685018204.992657][16390:16392] CHIP:TOO: [1]: { + [1685018204.992666][16390:16392] CHIP:TOO: MfgCode: 0 + [1685018204.992678][16390:16392] CHIP:TOO: Value: 0 + [1685018204.992687][16390:16392] CHIP:TOO: } + [1685018204.992695][16390:16392] CHIP:TOO: } + disabled: true + + - label: "TH reads from the DUT the CurrentMode attribute." + PICS: MOD.S.A0003 + verification: | + ./chip-tool modeselect read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value + - save tha value as old_current_mode_dut + - select a value from supported_modes_dut, different from old_current_mode_dut, and which corresponds to a mode the device can switch to, given its current state and save this value as new_mode_th + - select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, + below is the sample log provided for the raspi platform: + + [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, + [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 + [1685018283.726589][16418:16420] CHIP:DMG: } + [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 + [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + disabled: true + + - label: + "TH sends a ChangeToModeWithStatus command to the DUT with NewMode set + to old_current_mode_dut [Petru] note that currently this constraint is + not in the spec. The unapproved proposal is here: + https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/7096 + Until that's approved, please skip this step." + PICS: MOD.S.C01.Rsp + verification: | + ChangeToModeWithStatus Command is not impleented. + disabled: true + + - label: + "TH sends a ChangeToModeWithStatus command to the DUT with NewMode set + to new_mode_th" + PICS: MOD.S.C01.Rsp + verification: | + ChangeToModeWithStatus Command is not impleented. + disabled: true + + - label: "TH reads from the DUT the CurrentMode attribute." + PICS: MOD.S.A0003 + verification: | + ./chip-tool modeselect read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and equal to the new_mode_th, below is the sample log provided for the raspi platform: + + [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, + [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 + [1685018283.726589][16418:16420] CHIP:DMG: } + [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 + [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + disabled: true + + - label: + "TH sends a ChangeToModeWithStatus command to the DUT with NewMode set + to invalid_mode_th" + PICS: MOD.S.C01.Rsp + verification: | + ChangeToModeWithStatus Command is not impleented. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml index 4c84f00bfdd19d..d40989ab3f9cbd 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml @@ -16,7 +16,7 @@ name: 80.3.1. [TC-MOD-3.1] OnMode Verification (DUT as Server) PICS: - - MOD.S.A0005 + - MOD.S config: nodeId: 0x12344321 @@ -36,43 +36,40 @@ tests: This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command disabled: true - - label: "TH reads the OnMode attribute from the DUT" + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the OnMode attribute." PICS: MOD.S.A0005 && MOD.S.F00 verification: | ./chip-tool modeselect read on-mode 1 1 - On TH(chip-tool),Verify that the DUT response is an integer. Record this value for usage in steps 2b and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify OnMode attribute value is an integer. save the value as on_mode_dut and below is the sample log provided for the raspi platform: [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 && MOD.S.F00 verification: | ./chip-tool modeselect read current-mode 1 1 - On TH(chip-tool),Verify that the DUT response is an integer. Record this value for usage in steps 2b and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify CurrentMode attribute is an integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 [1649679034.895972][10879:10884] CHIP:TOO: CurrentMode: 0 disabled: true - - label: - "If the OnMode and CurrentMode attributes have the same value, proceed - to step 2c, Otherwise proceed to step 3a." - PICS: MOD.S.A0003 && MOD.S.A0005 && MOD.S.F00 - verification: | - NOTE: - If the OnMode and CurrentMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3a. - disabled: true - - - label: "TH reads the SupportedModes attribute from the DUT" + - label: "TH reads from the DUT the SupportedModes attribute." PICS: MOD.S.A0002 && MOD.S.F00 verification: | ./chip-tool modeselect read supported-modes 1 1 - Verify on TH(chip-tool) logs Supported modes provides a list of mode, each mode should be a struct containing a label and all of these values should be no larger than 16 bits for usage in step 2d and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries @@ -108,44 +105,54 @@ tests: disabled: true - label: - "Select a value from the list in step 2c with a different value than - the onMode value read in step 1. TH sends a ChangeToMode command to - the TH with the selected value." - PICS: MOD.S.A0002 && MOD.S.C00.Rsp && MOD.S.F00 + "TH sends a ChangeToMode command to the DUT with NewMode set to + new_mode_th" + PICS: MOD.S.C00.Rsp && MOD.S.F00 verification: | ./chip-tool modeselect change-to-mode 7 1 1 - On TH(chip-tool) log verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1645777419.711572][4798:4803] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0 + [1684931013.571019][20667:20669] CHIP:DMG: + [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = + [1684931013.571024][20667:20669] CHIP:DMG: { + [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931013.571030][20667:20669] CHIP:DMG: }, + [1684931013.571034][20667:20669] CHIP:DMG: disabled: true - - label: "TH sends an Off command to the DUT" + - label: "TH sends a Off command to the DUT" PICS: OO.S.C00.Rsp && MOD.S.F00 verification: | ./chip-tool onoff off 1 1 + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - On TH(chip-tool) log verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: - [1649679101.658594][10886:10891] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0000 Status=0x0 + [1684931101.118656][20709:20711] CHIP:DMG: StatusIB = + [1684931101.118659][20709:20711] CHIP:DMG: { + [1684931101.118663][20709:20711] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931101.118665][20709:20711] CHIP:DMG: }, disabled: true - - label: "TH sends an On command to the DUT" + - label: "TH sends a On command to the DUT" PICS: OO.S.C01.Rsp && MOD.S.F00 verification: | ./chip-tool onoff on 1 1 - On TH(chip-tool) log verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1649679156.146015][10893:10898] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 + [1684931217.055514][20729:20731] CHIP:DMG: StatusIB = + [1684931217.055517][20729:20731] CHIP:DMG: { + [1684931217.055520][20729:20731] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931217.055523][20729:20731] CHIP:DMG: }, disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 && MOD.S.F00 verification: | ./chip-tool modeselect read current-mode 1 1 - On TH(chip-tool),verify that CurrentMode has the same value recorded in step 1 and below is the sample log provided for the raspi platform: + On TH(chip-tool),verify that CurrentMode attribute value is an integer and value is equal to on_mode_dut. below is the sample log provided for the raspi platform: [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 [1649679202.069278][10899:10904] CHIP:TOO: CurrentMode: 0 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml index 8a34455f66efa9..794a590c0c194f 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml @@ -16,7 +16,7 @@ name: 80.3.2. [TC-MOD-3.2] StartUpMode Verification (DUT as Server) PICS: - - MOD.S.A0004 + - MOD.S config: nodeId: 0x12344321 @@ -43,43 +43,43 @@ tests: This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command disabled: true - - label: "TH reads the StartUpMode attribute from the DUT" + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the StartUpMode attribute." PICS: MOD.S.A0004 verification: | ./chip-tool modeselect read start-up-mode 1 1 - On TH(chip-tool), Verify StartUpMode attribute. Record this value for usage in step 2b and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify StartUpMode attribute value is an integer. save the valueas startup_mode_dut and below is the sample log provided for the raspi platform: [1645777708.406864][4841:4846] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469721 [1645777708.406933][4841:4846] CHIP:TOO: StartUpMode: 0 disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - On TH(chip-tool) , Verify CurrentMode attribute. Record this value for usage in step 2b and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify CurrentMode attribute value is integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 - disabled: true - - label: - "If the StartUpMode and CurrentMode attributes have the same value, - proceed to step 2c, Otherwise proceed to step 3a." - PICS: MOD.S.A0003 && MOD.S.A0004 - verification: | - NOTE: - If the StartUpMode and CurrentMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3a. + + If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. disabled: true - - label: "TH reads the SupportedModes attribute from the DUT" + - label: "TH reads from the DUT the SupportedModes attribute." PICS: MOD.S.A0002 verification: | ./chip-tool modeselect read supported-modes 1 1 - Verify on TH(chip-tool), Supported modes provides a list of mode, each mode should be a struct containing a label and all of these values should be no larger than 16 bits for usage in step 2d and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries @@ -115,30 +115,32 @@ tests: disabled: true - label: - "Select a value from the list in step 2c with a different value than - the StartUpMode value read in step 1. TH sends a ChangeToMode command - to the DUT with the selected value." - PICS: MOD.S.A0002 && MOD.S.C00.Rsp + "TH sends a ChangeToMode command to the DUT with NewMode set to + new_mode_th" + PICS: MOD.S.C00.Rsp verification: | ./chip-tool modeselect change-to-mode 4 1 1 - On TH(chip-tool) , Verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: + On TH(chip-tool) , Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1645778189.045030][4888:4893] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0 + [1684931419.768138][20792:20794] CHIP:DMG: StatusIB = + [1684931419.768143][20792:20794] CHIP:DMG: { + [1684931419.768148][20792:20794] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931419.768152][20792:20794] CHIP:DMG: }, disabled: true - - label: "Physically power cycle the device." + - label: "Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - on TH(chip-tool), Verify that CurrentMode is same as value recorded in step 1 and below is the sample log provided for the raspi platform: + on TH(chip-tool), Verify that CurrentMode attribute value is same as value recorded in step 1 and below is the sample log provided for the raspi platform: [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml deleted file mode 100644 index cded4323ec9240..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 80.3.3. [TC-MOD-3.3] OTA Mode Verification (DUT as Server) - -PICS: - - MOD.S.A0004 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - 1.To run this test case build the OTA Provider app to be build in the nRF Environment setup . Follow this step to setup the nRF build environment using container. - https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#using-docker-container-for-setup - - Once the build environmnet is ready , build teh OTA-Provider-App inside the container. Follow the below link to build the OTA-Provider app - https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-provider-app/linux - - 2. Build all-cluster-app in docker or Flash the pre-built folder from the delivered image - - To build maually and flash follow steps explained in: - https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#building - - west build -b nrf52840dk_nrf52840 -- -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y - - - 3.Flash - west flash --erase - - 4.OTA Image needs to build on the docker environment as like in the first step inside the all-clusters-app folder. Refer the below link to build the OTA image with new version. - - https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-requestor-app/linux#ota-requestor-app-linux - - To build the ota image with new version for nRF, use the following command inside the all-clusters-app folder , which will build matter.ota - - west build -b nrf52840dk_nrf52840 -d build2 -- -DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y - disabled: true - - - label: "Precondition" - verification: | - This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command - disabled: true - - - label: "TH reads the StartUpMode attribute from the DUT" - PICS: MOD.S.A0004 - verification: | - ./chip-tool modeselect read start-up-mode 1 1 - - on TH(chip-tool) log verify for StartUpMode. Record this value for usage in step 2b and below is the sample log provided for the raspi platform: - - [1645778279.693082][4898:4903] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469722 - [1645778279.693151][4898:4903] CHIP:TOO: StartUpMode: 0 - disabled: true - - - label: "TH reads the CurrentMode attribute from the DUT" - PICS: MOD.S.A0003 - verification: | - ./chip-tool modeselect read current-mode 1 1 - - on TH(chip-tool) log verify for CurrentMode. Record this value for usage in step 2b and 3 and below is the sample log provided for the raspi platform: - - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: - "If the StartUpMode and CurrentMode attributes have the same value, - proceed to step 2c, Otherwise proceed to step 3a." - PICS: MOD.S.A0003 && MOD.S.A0004 - verification: | - NOTE: - If the StartUpMode and CurrentMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3a. - disabled: true - - - label: "TH reads the SupportedModes attribute from the DUT" - PICS: MOD.S.A0002 - verification: | - ./chip-tool modeselect read supported-modes 1 1 - - on TH(chip-tool) log verify for SupportedModes. Record the mode for usage in step 2b and below is the sample log provided for the raspi platform: - - [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries - [1654595268.854743][14400:14405] CHIP:TOO: [1]: { - [1654595268.854772][14400:14405] CHIP:TOO: Label: Black - [1654595268.854811][14400:14405] CHIP:TOO: Mode: 0 - [1654595268.854843][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.854891][14400:14405] CHIP:TOO: [1]: { - [1654595268.854918][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.854945][14400:14405] CHIP:TOO: Value: 0 - [1654595268.854971][14400:14405] CHIP:TOO: } - [1654595268.855000][14400:14405] CHIP:TOO: } - [1654595268.855038][14400:14405] CHIP:TOO: [2]: { - [1654595268.855064][14400:14405] CHIP:TOO: Label: Cappuccino - [1654595268.855089][14400:14405] CHIP:TOO: Mode: 4 - [1654595268.855117][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855149][14400:14405] CHIP:TOO: [1]: { - [1654595268.855175][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855199][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855223][14400:14405] CHIP:TOO: } - [1654595268.855249][14400:14405] CHIP:TOO: } - [1654595268.855284][14400:14405] CHIP:TOO: [3]: { - [1654595268.855310][14400:14405] CHIP:TOO: Label: Espresso - [1654595268.855332][14400:14405] CHIP:TOO: Mode: 7 - [1654595268.855360][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855390][14400:14405] CHIP:TOO: [1]: { - [1654595268.855416][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855440][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855464][14400:14405] CHIP:TOO: } - [1654595268.855490][14400:14405] CHIP:TOO: } - [1649677252.376226][10804:10809] CHIP:TOO: SemanticTag: 0 - [1649677252.376252][10804:10809] CHIP:TOO: } - disabled: true - - - label: - "Select a value from the list in step 2c with a different value than - the StartUpMode value read in step 1. TH sends a ChangeToMode command - to the DUT with the selected value." - PICS: MOD.S.A0002 && MOD.S.C00.Rsp - verification: | - ./chip-tool modeselect change-to-mode 4 1 1 - - on TH(chip-tool) log verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: - - [1645778189.045030][4888:4893] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0 - disabled: true - - - label: - "Perform an OTA update on the device that requires a reboot. Allow for - the DUT to update and fully reboot." - verification: | - To perform an OTA update on Thread device follow the cmmds below: - - Step-1 : Where we builded OTA provider app execute this cmmd . (In my case I ran connectedhomeip/out/debug ./chip-otaprovider-app -f ) - - ./chip-otaprovider-app -f ~/chip_repos/connectedhomeip/examples/all-clusters-app/nrfconnect/build2/zephyr/matter.ota - - Ran on chip-tool: - - Step-2: ./chip-tool pairing onnetwork 2 20202021 - - Step-3 : ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": [{"cluster": 41, "endpoint": null, "deviceType": null}]}]' 2 0 - - Step-4: ./chip-tool otasoftwareupdaterequestor write default-otaproviders '[{"fabricIndex": 1, "providerNodeID": 2, "endpoint": 0}]' 1 0 - - Step-5: ./chip-tool otasoftwareupdaterequestor announce-otaprovider 2 0 0 0 1 0 - disabled: true - - - label: "TH reads the CurrentMode attribute from the DUT" - PICS: MOD.S.A0003 - verification: | - ./chip-tool modeselect read current-mode 1 1 - - on TH(chip-tool) log verify that CurrentMode is same as value recorded in step 2d and below is the sample log provided for the raspi platform: - - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 4 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml index 502d69881b83cf..2a9c533e2e05c2 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml @@ -16,9 +16,7 @@ name: 80.3.4. [TC-MOD-3.4] OnMode Overwriting StartUpMode (DUT as Server) PICS: - - MOD.S.A0004 - - MOD.S.A0005 - - OO.S.A4003 + - MOD.S config: nodeId: 0x12344321 @@ -49,24 +47,30 @@ tests: This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command disabled: true - - label: "TH reads the StartUpMode attribute from the DUT" + - label: + "Commission DUT to TH (can be skipped if done in a preceding test)." + verification: | + + disabled: true + + - label: "TH reads from the DUT the StartUpMode attribute." PICS: MOD.S.A0004 verification: | ./chip-tool modeselect read start-up-mode 1 1 - On TH(chip-tool) log, Verify StartUpMode attribute. Record this value for usage in step 2 and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify StartUpMode attribute value is an integer. save this value as startup_mode_dut and below is the sample log provided for the raspi platform: [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 disabled: true - - label: "TH reads the OnMode attribute from the DUT" - PICS: MOD.S.A0005 + - label: "TH reads from the DUT the OnMode attribute." + PICS: MOD.S.A0005 && MOD.S.A0004 verification: | ./chip-tool modeselect read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute. Record this value for usage in step 2b and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as old_on_mode_dut and below is the sample log provided for the raspi platform: [1654780979.979743][61542:61547] CHIP:DMG: } @@ -74,62 +78,54 @@ tests: [1654780979.980202][61542:61547] CHIP:TOO: OnMode: 4 disabled: true - - label: - "If the StartUpMode and OnMode attributes have the same value, proceed - to step 2c, Otherwise proceed to step 3." - PICS: MOD.S.A0004 && MOD.S.A0005 + - label: "TH reads from the DUT the SupportedModes attribute." + PICS: MOD.S.A0002 && MOD.S.A0004 verification: | NOTE: - If the StartUpMode and OnMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3. - disabled: true + If the StartUpMode and OnMode attributes have the same value, proceed to step 4, Otherwise proceed to step 6. - - label: "TH reads the SupportedModes attribute from the DUT" - PICS: MOD.S.A0002 - verification: | ./chip-tool modeselect read supported-modes 1 1 - On TH(chip-tool) log, Verify SupportedModes attribute. Record the mode for usage in step 2d and below is the sample log provided for the raspi platform: - - [1654154058.284710][3492:3497] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 694763126 - [1654154058.284829][3492:3497] CHIP:TOO: SupportedModes: 3 entries - [1654154058.284909][3492:3497] CHIP:TOO: [1]: { - [1654154058.284939][3492:3497] CHIP:TOO: Label: Black - [1654154058.284966][3492:3497] CHIP:TOO: Mode: 0 - [1654154058.284999][3492:3497] CHIP:TOO: SemanticTags: 1 entries - [1654154058.285037][3492:3497] CHIP:TOO: [1]: { - [1654154058.285066][3492:3497] CHIP:TOO: MfgCode: 0 - [1654154058.285094][3492:3497] CHIP:TOO: Value: 0 - [1654154058.285121][3492:3497] CHIP:TOO: } - [1654154058.285150][3492:3497] CHIP:TOO: } - [1654154058.285188][3492:3497] CHIP:TOO: [2]: { - [1654154058.285216][3492:3497] CHIP:TOO: Label: Cappuccino - [1654154058.285243][3492:3497] CHIP:TOO: Mode: 4 - [1654154058.285274][3492:3497] CHIP:TOO: SemanticTags: 1 entries - [1654154058.285309][3492:3497] CHIP:TOO: [1]: { - [1654154058.285337][3492:3497] CHIP:TOO: MfgCode: 0 - [1654154058.285364][3492:3497] CHIP:TOO: Value: 0 - [1654154058.285390][3492:3497] CHIP:TOO: } - [1654154058.285418][3492:3497] CHIP:TOO: } - [1654154058.285456][3492:3497] CHIP:TOO: [3]: { - [1654154058.285484][3492:3497] CHIP:TOO: Label: Espresso - [1654154058.285513][3492:3497] CHIP:TOO: Mode: 7 - [1654154058.285547][3492:3497] CHIP:TOO: SemanticTags: 1 entries - [1654154058.285638][3492:3497] CHIP:TOO: [1]: { - [1654154058.285671][3492:3497] CHIP:TOO: MfgCode: 0 - [1654154058.285701][3492:3497] CHIP:TOO: Value: 0 - [1654154058.285730][3492:3497] CHIP:TOO: } - [1654154058.285762][3492:3497] CHIP:TOO: } + On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1685020074.437287][16950:16952] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3898153349 + [1685020074.437313][16950:16952] CHIP:TOO: SupportedModes: 3 entries + [1685020074.437620][16950:16952] CHIP:TOO: [1]: { + [1685020074.437632][16950:16952] CHIP:TOO: Label: Black + [1685020074.437635][16950:16952] CHIP:TOO: Mode: 0 + [1685020074.437823][16950:16952] CHIP:TOO: SemanticTags: 1 entries + [1685020074.437834][16950:16952] CHIP:TOO: [1]: { + [1685020074.437838][16950:16952] CHIP:TOO: MfgCode: 0 + [1685020074.437841][16950:16952] CHIP:TOO: Value: 0 + [1685020074.437843][16950:16952] CHIP:TOO: } + [1685020074.437846][16950:16952] CHIP:TOO: } + [1685020074.437852][16950:16952] CHIP:TOO: [2]: { + [1685020074.437854][16950:16952] CHIP:TOO: Label: Cappuccino + [1685020074.437857][16950:16952] CHIP:TOO: Mode: 4 + [1685020074.437861][16950:16952] CHIP:TOO: SemanticTags: 1 entries + [1685020074.437865][16950:16952] CHIP:TOO: [1]: { + [1685020074.437868][16950:16952] CHIP:TOO: MfgCode: 0 + [1685020074.437870][16950:16952] CHIP:TOO: Value: 0 + [1685020074.437873][16950:16952] CHIP:TOO: } + [1685020074.437876][16950:16952] CHIP:TOO: } + [1685020074.437881][16950:16952] CHIP:TOO: [3]: { + [1685020074.437883][16950:16952] CHIP:TOO: Label: Espresso + [1685020074.437885][16950:16952] CHIP:TOO: Mode: 7 + [1685020074.437889][16950:16952] CHIP:TOO: SemanticTags: 1 entries + [1685020074.437892][16950:16952] CHIP:TOO: [1]: { + [1685020074.437895][16950:16952] CHIP:TOO: MfgCode: 0 + [1685020074.437897][16950:16952] CHIP:TOO: Value: 0 + [1685020074.437900][16950:16952] CHIP:TOO: } + [1685020074.437902][16950:16952] CHIP:TOO: } disabled: true - label: - "Select a value from the list in step 2c with a different value than - the StartUpMode value read in step 1. TH sends a write command for - OnMode to the DUT with the selected value." - PICS: MOD.S.A0002 && MOD.S.C00.Rsp + "TH writes to the DUT the OnMode attribute with the new_mode_th value" + PICS: MOD.S.A0005 verification: | ./chip-tool modeselect write on-mode 7 1 1 - On TH(chip-tool) log, Verify that status has a value 0x00 (success) and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: [1651099941884] [84269:7567211] CHIP: [DMG] WriteResponseMessage = [1651099941884] [84269:7567211] CHIP: [DMG] { @@ -157,25 +153,24 @@ tests: [1651099941887] [84269:7567211] CHIP: [DMG] } disabled: true - - label: "TH reads the OnMode attribute from the DUT" - PICS: MOD.S.F00 && MOD.S.A0005 + - label: "TH reads from the DUT the OnMode attribute." + PICS: MOD.S.A0005 && MOD.S.F00 verification: | ./chip-tool modeselect read on-mode 1 1 - on TH(chip-tool) log, Verify OnMode attribute. Record this value and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as new_on_mode_dut and below is the sample log provided for the raspi platform: } [1669190858.739158][4187:4189] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4107771634 [1669190858.739222][4187:4189] CHIP:TOO: OnMode: 7 disabled: true - - label: - "TH writes 1 to StartUpOnOff attribute of the OnOff Cluster of the DUT" + - label: "TH writes to the DUT the StartUpOnOff attribute with the value 1." PICS: OO.S.A4003 verification: | ./chip-tool onoff write start-up-on-off 1 1 1 - On TH(chip-tool), Verify SUCCESS response . Record this value and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: [1651101661959] [90832:7598169] CHIP: [DMG] WriteResponseMessage = [1651101661959] [90832:7598169] CHIP: [DMG] { @@ -203,19 +198,18 @@ tests: [1651101661960] [90832:7598169] CHIP: [DMG] } disabled: true - - label: "Physically power cycle the device." - PICS: "" + - label: "Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "TH reads the CurrentMode attribute from the DUT" + - label: "TH reads from the DUT the CurrentMode attribute." PICS: MOD.S.A0003 verification: | ./chip-tool modeselect read current-mode 1 1 - On TH(chip-tool),Verify CurrentMode value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: + On TH(chip-tool),Verify CurrentMode attribute value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: } [1669190936.869804][4194:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3908583538 diff --git a/src/app/tests/suites/certification/Test_TC_PRS_2_1.yaml b/src/app/tests/suites/certification/Test_TC_PRS_2_1.yaml index 284782be9e42a6..3bc25e6fae7f58 100644 --- a/src/app/tests/suites/certification/Test_TC_PRS_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PRS_2_1.yaml @@ -31,21 +31,12 @@ tests: - name: "nodeId" value: nodeId - - label: "Read the mandatory attribute constraints: MeasuredValue" - PICS: PRS.S.A0000 - command: "readAttribute" - attribute: "MeasuredValue" - response: - constraints: - type: int16s - minValue: -32768 - maxValue: 32767 - - label: "Read the mandatory attribute constraints: MinMeasuredValue" PICS: PRS.S.A0001 command: "readAttribute" attribute: "MinMeasuredValue" response: + saveAs: MinMeasuredValue constraints: type: int16s minValue: -32768 @@ -56,11 +47,22 @@ tests: command: "readAttribute" attribute: "MaxMeasuredValue" response: + saveAs: MaxMeasuredValue constraints: type: int16s minValue: -32768 maxValue: 32767 + - label: "Read the mandatory attribute constraints: MeasuredValue" + PICS: PRS.S.A0000 + command: "readAttribute" + attribute: "MeasuredValue" + response: + constraints: + type: int16s + minValue: MinMeasuredValue + maxValue: MaxMeasuredValue + - label: "Read the optional attribute: Tolerance" PICS: PRS.S.A0003 command: "readAttribute" @@ -71,21 +73,12 @@ tests: minValue: 0 maxValue: 2048 - - label: "Read the optional attribute: ScaledValue" - PICS: PRS.S.A0010 - command: "readAttribute" - attribute: "ScaledValue" - response: - constraints: - type: int16s - minValue: -32768 - maxValue: 32767 - - label: "Read the optional attribute: MinScaledValue" PICS: PRS.S.A0011 command: "readAttribute" attribute: "MinScaledValue" response: + saveAs: MinScaledValue constraints: type: int16s minValue: -32768 @@ -96,11 +89,22 @@ tests: command: "readAttribute" attribute: "MaxScaledValue" response: + saveAs: MaxScaledValue constraints: type: int16s minValue: -32768 maxValue: 32767 + - label: "Read the optional attribute: ScaledValue" + PICS: PRS.S.A0010 + command: "readAttribute" + attribute: "ScaledValue" + response: + constraints: + type: int16s + minValue: MinScaledValue + maxValue: MaxScaledValue + - label: "Read the optional attribute: ScaledTolerance" PICS: PRS.S.A0013 command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml index 2a5d51fa3d0f09..98da9f0325328a 100644 --- a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml @@ -155,6 +155,12 @@ tests: verification: | ./chip-tool powersource read event-list 1 1 + On TH(chip-tool), Verify that the DUT response provides a list of supported events. This list can be empty or contain following optional event IDs: + if PS.S.E00(WiredFaultChange) : 0 + if PS.S.E01(BatFaultChange): 1 + if PS.S.E02(BatChargeFaultChange): 2 + Optionally the list can also contain manufacturer specific event IDs. + [1676465733.563197][27987:27989] CHIP:DMG: } [1676465733.563336][27987:27989] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_FFFA DataVersion: 2315782406 [1676465733.563366][27987:27989] CHIP:TOO: EventList: 1 entries diff --git a/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml new file mode 100644 index 00000000000000..e5c85bb6c810bf --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml @@ -0,0 +1,589 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default + +name: 62.3.1. [TC-PS-3.1] Attributes with client as DUT + +PICS: + - PS.C + - PS.C.AM-READ + - PS.C.AO-READ + - PS.C.AM-WRITE + - PS.C.AO-WRITE + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: + "DUT reads all supported mandatory attributes from TH one at a time in + a manufacturer specific order" + PICS: PS.C.AM-READ + verification: | + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + ./chip-tool powersource read status 1 1 + + verify the " status response" on the TH (all-cluster-app) log: + + + [1646155382.977445][33190:33190] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:685127 on exchange 16568r + [1646155382.977534][33190:33190] CHIP:EM: Handling via exchange: 16568r, Delegate: 0xaaaace1730c8 + [1646155382.978021][33190:33190] CHIP:IM: Received Read request + [1646155382.978109][33190:33190] CHIP:DMG: ReadRequestMessage = + [1646155382.978143][33190:33190] CHIP:DMG: { + [1646155382.978167][33190:33190] CHIP:DMG: AttributePathIBs = + [1646155382.978204][33190:33190] CHIP:DMG: [ + [1646155382.978309][33190:33190] CHIP:DMG: AttributePathIB = + [1646155382.978369][33190:33190] CHIP:DMG: { + [1646155382.978408][33190:33190] CHIP:DMG: Endpoint = 0x1, + [1646155382.978459][33190:33190] CHIP:DMG: Cluster = 0x2f, + [1646155382.978513][33190:33190] CHIP:DMG: Attribute = 0x0000_0000, + [1646155382.978545][33190:33190] CHIP:DMG: } + [1646155382.978767][33190:33190] CHIP:DMG: + [1646155382.978804][33190:33190] CHIP:DMG: ], + [1646155382.978836][33190:33190] CHIP:DMG: + [1646155382.978872][33190:33190] CHIP:DMG: isFabricFiltered = false, + [1646155382.978901][33190:33190] CHIP:DMG: InteractionModelRevision = 1 + [1646155382.978927][33190:33190] CHIP:DMG: }, + [1646155382.978998][33190:33190] CHIP:DMG: IM RH moving to [GeneratingReports] + [1646155382.979658][33190:33190] CHIP:DMG: Cluster 2f, Attribute 0 is dirty + [1646155382.979729][33190:33190] CHIP:DMG: Reading attribute: Cluster=0x0000_002F Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1646155382.979764][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_002F e=1 p=v + [1646010346.974150][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v + + ./chip-tool powersource read order 1 1 + + verify the " order response" on the TH (all-cluster-app) log: + + [1653395573.862606][19412:19412] CHIP:IM: Received Read request + [1653395573.862690][19412:19412] CHIP:DMG: ReadRequestMessage = + [1653395573.862739][19412:19412] CHIP:DMG: { + [1653395573.862779][19412:19412] CHIP:DMG: AttributePathIBs = + [1653395573.862827][19412:19412] CHIP:DMG: [ + [1653395573.862872][19412:19412] CHIP:DMG: AttributePathIB = + [1653395573.862928][19412:19412] CHIP:DMG: { + [1653395573.862980][19412:19412] CHIP:DMG: Endpoint = 0x1, + [1653395573.863037][19412:19412] CHIP:DMG: Cluster = 0x2f, + [1653395573.863101][19412:19412] CHIP:DMG: Attribute = 0x0000_0001, + [1653395573.863161][19412:19412] CHIP:DMG: } + [1653395573.863217][19412:19412] CHIP:DMG: + [1653395573.863267][19412:19412] CHIP:DMG: ], + [1653395573.863319][19412:19412] CHIP:DMG: + [1653395573.863367][19412:19412] CHIP:DMG: isFabricFiltered = true, + [1653395573.863413][19412:19412] CHIP:DMG: InteractionModelRevision = 1 + [1653395573.863456][19412:19412] CHIP:DMG: }, + [1653395573.863589][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] + [1653395573.863720][19412:19412] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 + + ./chip-tool powersource read description 1 1 + + verify the " description response" on the TH (all-cluster-app) log: + + CHIP:IM: Received Read request + [1653395620.020314][19412:19412] CHIP:DMG: ReadRequestMessage = + [1653395620.020364][19412:19412] CHIP:DMG: { + [1653395620.020406][19412:19412] CHIP:DMG: AttributePathIBs = + [1653395620.020463][19412:19412] CHIP:DMG: [ + [1653395620.020511][19412:19412] CHIP:DMG: AttributePathIB = + [1653395620.020576][19412:19412] CHIP:DMG: { + [1653395620.020635][19412:19412] CHIP:DMG: Endpoint = 0x1, + [1653395620.020703][19412:19412] CHIP:DMG: Cluster = 0x2f, + [1653395620.020770][19412:19412] CHIP:DMG: Attribute = 0x0000_0002, + [1653395620.020833][19412:19412] CHIP:DMG: } + [1653395620.020893][19412:19412] CHIP:DMG: + [1653395620.020945][19412:19412] CHIP:DMG: ], + [1653395620.020999][19412:19412] CHIP:DMG: + [1653395620.021052][19412:19412] CHIP:DMG: isFabricFiltered = true, + [1653395620.021104][19412:19412] CHIP:DMG: InteractionModelRevision = 1 + [1653395620.021153][19412:19412] CHIP:DMG: }, + [1653395620.021252][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] + + + ./chip-tool powersource read bat-charge-level 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-app) log) + + [1663140804.059599][2414:2414] CHIP:IM: Received Read request + [1663140804.059679][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663140804.059706][2414:2414] CHIP:DMG: { + [1663140804.059728][2414:2414] CHIP:DMG: AttributePathIBs = + [1663140804.059754][2414:2414] CHIP:DMG: [ + [1663140804.059779][2414:2414] CHIP:DMG: AttributePathIB = + [1663140804.059828][2414:2414] CHIP:DMG: { + [1663140804.059861][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663140804.059913][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663140804.059946][2414:2414] CHIP:DMG: Attribute = 0x0000_000E, + [1663140804.059976][2414:2414] CHIP:DMG: } + [1663140804.060006][2414:2414] CHIP:DMG: + [1663140804.060033][2414:2414] CHIP:DMG: ], + [1663140804.060060][2414:2414] CHIP:DMG: + [1663140804.060087][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663140804.060111][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663140804.060136][2414:2414] CHIP:DMG: }, + + + ./chip-tool powersource read bat-replacement-needed 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-app) log) + + [1663141268.348233][2414:2414] CHIP:IM: Received Read request + [1663141268.348332][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663141268.348388][2414:2414] CHIP:DMG: { + [1663141268.348418][2414:2414] CHIP:DMG: AttributePathIBs = + [1663141268.348465][2414:2414] CHIP:DMG: [ + [1663141268.348498][2414:2414] CHIP:DMG: AttributePathIB = + [1663141268.348545][2414:2414] CHIP:DMG: { + [1663141268.348584][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663141268.348637][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663141268.348685][2414:2414] CHIP:DMG: Attribute = 0x0000_000F, + [1663141268.348735][2414:2414] CHIP:DMG: } + [1663141268.348774][2414:2414] CHIP:DMG: + [1663141268.348820][2414:2414] CHIP:DMG: ], + [1663141268.348857][2414:2414] CHIP:DMG: + [1663141268.348904][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663141268.348938][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663141268.348982][2414:2414] CHIP:DMG: }, + [1663141268.349086][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] + [1663141268.349214][2414:2414] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1663141268.349251][2414:2414] CHIP:DMG: Cluster 2f, Attribute f is dirty + + + ./chip-tool powersource read bat-replaceability 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-app) log + + + [1663141378.115928][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663141378.115978][2414:2414] CHIP:DMG: { + [1663141378.116006][2414:2414] CHIP:DMG: AttributePathIBs = + [1663141378.116050][2414:2414] CHIP:DMG: [ + [1663141378.116080][2414:2414] CHIP:DMG: AttributePathIB = + [1663141378.116124][2414:2414] CHIP:DMG: { + [1663141378.116160][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663141378.116208][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663141378.116247][2414:2414] CHIP:DMG: Attribute = 0x0000_0010, + [1663141378.116294][2414:2414] CHIP:DMG: } + [1663141378.116330][2414:2414] CHIP:DMG: + [1663141378.116372][2414:2414] CHIP:DMG: ], + [1663141378.116407][2414:2414] CHIP:DMG: + [1663141378.116450][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663141378.116481][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663141378.116521][2414:2414] CHIP:DMG: }, + [1663141378.116621][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] + disabled: true + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + PICS: PS.C.AO-READ + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + + ./chip-tool powersource read wired-assessed-input-voltage 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + + ./chip-tool powersource read wired-assessed-input-frequency 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read wired-current-type 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read wired-assessed-current 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read wired-nominal-voltage 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read wired-maximum-current 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read wired-present 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read active-wired-faults 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read bat-voltage 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read bat-percent-remaining 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read bat-time-remaining 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read bat-present 1 1 + + Verify on the TH Log: + + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read active-bat-faults 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + + ./chip-tool powersource read bat-replacement-description 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-common-designation 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-ansidesignation 1 1 + + Verify on the TH Log: + + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-iecdesignation 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + + ./chip-tool powersource read bat-approved-chemistry 1 1 + + Verify on the TH Log: + + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-capacity 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + + ./chip-tool powersource read bat-quantity 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-charge-state 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-time-to-full-charge 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-functional-while-charging 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read bat-charging-current 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) " + + ./chip-tool powersource read active-bat-charge-faults 1 1 + + Verify on the TH Log: + General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" + disabled: true + + - label: + "DUT writes a suitable value to all supported mandatory attributes on + the TH one at a time in a manufacturer specific order" + PICS: PS.C.AM-WRITE + verification: | + This cluster doesn't have any writable attributes + disabled: true + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + PICS: PS.C.AO-WRITE + verification: | + This cluster doesn't have any writable attributes + disabled: true + + - label: + "Configure TH such that it implements mandatory and none of the + optional attributes of the server-side of the cluster, and that it + also reflects this in global attributes such as FeatureMap and + AttributeList. Commission DUT to TH again" + verification: | + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + ./chip-tool powersource read feature-map 1 1 + verify the " feature-map response" on the TH (all-cluster-minimal-app) log: + [1678873672.092602][348369:348369] CHIP:IM: Received Read request + [1678873672.092651][348369:348369] CHIP:DMG: ReadRequestMessage = + [1678873672.092660][348369:348369] CHIP:DMG: { + [1678873672.092669][348369:348369] CHIP:DMG: AttributePathIBs = + [1678873672.092680][348369:348369] CHIP:DMG: [ + [1678873672.092706][348369:348369] CHIP:DMG: AttributePathIB = + [1678873672.092715][348369:348369] CHIP:DMG: { + [1678873672.092724][348369:348369] CHIP:DMG: Endpoint = 0x1, + [1678873672.092735][348369:348369] CHIP:DMG: Cluster = 0x2f, + [1678873672.092747][348369:348369] CHIP:DMG: Attribute = 0x0000_FFFC, + [1678873672.092757][348369:348369] CHIP:DMG: } + [1678873672.092770][348369:348369] CHIP:DMG: + [1678873672.092777][348369:348369] CHIP:DMG: ], + [1678873672.092791][348369:348369] CHIP:DMG: + [1678873672.092800][348369:348369] CHIP:DMG: isFabricFiltered = true, + [1678873672.092810][348369:348369] CHIP:DMG: InteractionModelRevision = 1 + [1678873672.092818][348369:348369] CHIP:DMG: }, + [1678873672.092858][348369:348369] CHIP:DMG: IM RH moving to [GeneratingReports] + [1678873672.092892][348369:348369] CHIP:DMG: Building Reports for ReadHandler + + + ./chip-tool powersource read attribute-list 1 0 + + verify the " attribute-list response" on the TH (all-cluster-minimal-app) log: + + [1659596771.124636][2409:2409] CHIP:IM: Received Read request + [1659596771.124765][2409:2409] CHIP:DMG: ReadRequestMessage = + [1659596771.124795][2409:2409] CHIP:DMG: { + [1659596771.124814][2409:2409] CHIP:DMG: AttributePathIBs = + [1659596771.124838][2409:2409] CHIP:DMG: [ + [1659596771.124859][2409:2409] CHIP:DMG: AttributePathIB = + [1659596771.124901][2409:2409] CHIP:DMG: { + [1659596771.124928][2409:2409] CHIP:DMG: Endpoint = 0x0, + [1659596771.124963][2409:2409] CHIP:DMG: Cluster = 0x2f, + [1659596771.124989][2409:2409] CHIP:DMG: Attribute = 0x0000_FFFB, + [1659596771.125020][2409:2409] CHIP:DMG: } + [1659596771.125045][2409:2409] CHIP:DMG: + [1659596771.125077][2409:2409] CHIP:DMG: ], + [1659596771.125102][2409:2409] CHIP:DMG: + [1659596771.125134][2409:2409] CHIP:DMG: isFabricFiltered = true, + [1659596771.125156][2409:2409] CHIP:DMG: InteractionModelRevision = 1 + [1659596771.125177][2409:2409] CHIP:DMG: }, + + + + ./chip-tool powersource read status 1 1 + + verify the " status response" on the TH (all-cluster-minimal-app) log: + + [1646155382.977534][33190:33190] CHIP:EM: Handling via exchange: 16568r, Delegate: 0xaaaace1730c8 + [1646155382.978021][33190:33190] CHIP:IM: Received Read request + [1646155382.978109][33190:33190] CHIP:DMG: ReadRequestMessage = + [1646155382.978143][33190:33190] CHIP:DMG: { + [1646155382.978167][33190:33190] CHIP:DMG: AttributePathIBs = + [1646155382.978204][33190:33190] CHIP:DMG: [ + [1646155382.978309][33190:33190] CHIP:DMG: AttributePathIB = + [1646155382.978369][33190:33190] CHIP:DMG: { + [1646155382.978408][33190:33190] CHIP:DMG: Endpoint = 0x1, + [1646155382.978459][33190:33190] CHIP:DMG: Cluster = 0x2f, + [1646155382.978513][33190:33190] CHIP:DMG: Attribute = 0x0000_0000, + [1646155382.978545][33190:33190] CHIP:DMG: } + [1646155382.978767][33190:33190] CHIP:DMG: + [1646155382.978804][33190:33190] CHIP:DMG: ], + [1646155382.978836][33190:33190] CHIP:DMG: + [1646155382.978872][33190:33190] CHIP:DMG: isFabricFiltered = false, + [1646155382.978901][33190:33190] CHIP:DMG: InteractionModelRevision = 1 + [1646155382.978927][33190:33190] CHIP:DMG: }, + [1646155382.978998][33190:33190] CHIP:DMG: IM RH moving to [GeneratingReports] + [1646155382.979658][33190:33190] CHIP:DMG: Cluster 2f, Attribute 0 is dirty + [1646155382.979729][33190:33190] CHIP:DMG: Reading attribute: Cluster=0x0000_002F Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1646155382.979764][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_002F e=1 p=v + [1646010346.974150][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v + + ./chip-tool powersource read order 1 1 + + verify the " order response" on the TH (all-cluster-minimal-app) log: + + [1653395573.862606][19412:19412] CHIP:IM: Received Read request + [1653395573.862690][19412:19412] CHIP:DMG: ReadRequestMessage = + [1653395573.862739][19412:19412] CHIP:DMG: { + [1653395573.862779][19412:19412] CHIP:DMG: AttributePathIBs = + [1653395573.862827][19412:19412] CHIP:DMG: [ + [1653395573.862872][19412:19412] CHIP:DMG: AttributePathIB = + [1653395573.862928][19412:19412] CHIP:DMG: { + [1653395573.862980][19412:19412] CHIP:DMG: Endpoint = 0x1, + [1653395573.863037][19412:19412] CHIP:DMG: Cluster = 0x2f, + [1653395573.863101][19412:19412] CHIP:DMG: Attribute = 0x0000_0001, + [1653395573.863161][19412:19412] CHIP:DMG: } + [1653395573.863217][19412:19412] CHIP:DMG: + [1653395573.863267][19412:19412] CHIP:DMG: ], + [1653395573.863319][19412:19412] CHIP:DMG: + [1653395573.863367][19412:19412] CHIP:DMG: isFabricFiltered = true, + [1653395573.863413][19412:19412] CHIP:DMG: InteractionModelRevision = 1 + [1653395573.863456][19412:19412] CHIP:DMG: }, + [1653395573.863589][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] + [1653395573.863720][19412:19412] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 + + ./chip-tool powersource read description 1 1 + + verify the " description response" on the TH (all-cluster-minimal-app) log: + + CHIP:IM: Received Read request + [1653395620.020314][19412:19412] CHIP:DMG: ReadRequestMessage = + [1653395620.020364][19412:19412] CHIP:DMG: { + [1653395620.020406][19412:19412] CHIP:DMG: AttributePathIBs = + [1653395620.020463][19412:19412] CHIP:DMG: [ + [1653395620.020511][19412:19412] CHIP:DMG: AttributePathIB = + [1653395620.020576][19412:19412] CHIP:DMG: { + [1653395620.020635][19412:19412] CHIP:DMG: Endpoint = 0x1, + [1653395620.020703][19412:19412] CHIP:DMG: Cluster = 0x2f, + [1653395620.020770][19412:19412] CHIP:DMG: Attribute = 0x0000_0002, + [1653395620.020833][19412:19412] CHIP:DMG: } + [1653395620.020893][19412:19412] CHIP:DMG: + [1653395620.020945][19412:19412] CHIP:DMG: ], + [1653395620.020999][19412:19412] CHIP:DMG: + [1653395620.021052][19412:19412] CHIP:DMG: isFabricFiltered = true, + [1653395620.021104][19412:19412] CHIP:DMG: InteractionModelRevision = 1 + [1653395620.021153][19412:19412] CHIP:DMG: }, + [1653395620.021252][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] + + + ./chip-tool powersource read bat-charge-level 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log + + [1663140804.059599][2414:2414] CHIP:IM: Received Read request + [1663140804.059679][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663140804.059706][2414:2414] CHIP:DMG: { + [1663140804.059728][2414:2414] CHIP:DMG: AttributePathIBs = + [1663140804.059754][2414:2414] CHIP:DMG: [ + [1663140804.059779][2414:2414] CHIP:DMG: AttributePathIB = + [1663140804.059828][2414:2414] CHIP:DMG: { + [1663140804.059861][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663140804.059913][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663140804.059946][2414:2414] CHIP:DMG: Attribute = 0x0000_000E, + [1663140804.059976][2414:2414] CHIP:DMG: } + [1663140804.060006][2414:2414] CHIP:DMG: + [1663140804.060033][2414:2414] CHIP:DMG: ], + [1663140804.060060][2414:2414] CHIP:DMG: + [1663140804.060087][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663140804.060111][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663140804.060136][2414:2414] CHIP:DMG: }, + + + ./chip-tool powersource read bat-replacement-needed 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log + + [1663141268.348233][2414:2414] CHIP:IM: Received Read request + [1663141268.348332][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663141268.348388][2414:2414] CHIP:DMG: { + [1663141268.348418][2414:2414] CHIP:DMG: AttributePathIBs = + [1663141268.348465][2414:2414] CHIP:DMG: [ + [1663141268.348498][2414:2414] CHIP:DMG: AttributePathIB = + [1663141268.348545][2414:2414] CHIP:DMG: { + [1663141268.348584][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663141268.348637][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663141268.348685][2414:2414] CHIP:DMG: Attribute = 0x0000_000F, + [1663141268.348735][2414:2414] CHIP:DMG: } + [1663141268.348774][2414:2414] CHIP:DMG: + [1663141268.348820][2414:2414] CHIP:DMG: ], + [1663141268.348857][2414:2414] CHIP:DMG: + [1663141268.348904][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663141268.348938][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663141268.348982][2414:2414] CHIP:DMG: }, + [1663141268.349086][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] + [1663141268.349214][2414:2414] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1663141268.349251][2414:2414] CHIP:DMG: Cluster 2f, Attribute f is dirty + + + ./chip-tool powersource read bat-replaceability 1 1 + + Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log + + + [1663141378.115928][2414:2414] CHIP:DMG: ReadRequestMessage = + [1663141378.115978][2414:2414] CHIP:DMG: { + [1663141378.116006][2414:2414] CHIP:DMG: AttributePathIBs = + [1663141378.116050][2414:2414] CHIP:DMG: [ + [1663141378.116080][2414:2414] CHIP:DMG: AttributePathIB = + [1663141378.116124][2414:2414] CHIP:DMG: { + [1663141378.116160][2414:2414] CHIP:DMG: Endpoint = 0x1, + [1663141378.116208][2414:2414] CHIP:DMG: Cluster = 0x2f, + [1663141378.116247][2414:2414] CHIP:DMG: Attribute = 0x0000_0010, + [1663141378.116294][2414:2414] CHIP:DMG: } + [1663141378.116330][2414:2414] CHIP:DMG: + [1663141378.116372][2414:2414] CHIP:DMG: ], + [1663141378.116407][2414:2414] CHIP:DMG: + [1663141378.116450][2414:2414] CHIP:DMG: isFabricFiltered = true, + [1663141378.116481][2414:2414] CHIP:DMG: InteractionModelRevision = 1 + [1663141378.116521][2414:2414] CHIP:DMG: }, + [1663141378.116621][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] + disabled: true + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + PICS: PS.C.AO-READ + verification: | + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + + + Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 + + + ./chip-tool powersource read bat-charge-level 1 1 + + on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + + + ./chip-tool powersource read bat-replacement-needed 1 1 + + on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + + + ./chip-tool powersource read bat-replaceability 1 1 + + on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + disabled: true + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + PICS: PS.C.AO-WRITE + verification: | + This cluster doesn't have any writable attributes + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_PS_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PS_3_1_Simulated.yaml deleted file mode 100644 index 2c0f0e34f7a79d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_PS_3_1_Simulated.yaml +++ /dev/null @@ -1,420 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 62.3.1. [TC-PS-3.1] Attributes with client as DUT - -PICS: - - PS.C - - PS.C.AM-READ - - PS.C.AO-READ - - PS.C.AM-WRITE - - PS.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Power Source" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: Status" - wait: "readAttribute" - attribute: "Status" - - - label: "Read attribute: Order" - wait: "readAttribute" - attribute: "Order" - - - label: "Read attribute: Description" - wait: "readAttribute" - attribute: "Description" - - - label: "Read attribute: WiredAssessedInputVoltage" - wait: "readAttribute" - attribute: "WiredAssessedInputVoltage" - - - label: "Read attribute: WiredAssessedInputFrequency" - wait: "readAttribute" - attribute: "WiredAssessedInputFrequency" - - - label: "Read attribute: WiredCurrentType" - wait: "readAttribute" - attribute: "WiredCurrentType" - - - label: "Read attribute: WiredAssessedCurrent" - wait: "readAttribute" - attribute: "WiredAssessedCurrent" - - - label: "Read attribute: WiredNominalVoltage" - wait: "readAttribute" - attribute: "WiredNominalVoltage" - - - label: "Read attribute: WiredPresent" - wait: "readAttribute" - attribute: "WiredPresent" - - - label: "Read attribute: WiredMaximumCurrent" - wait: "readAttribute" - attribute: "WiredMaximumCurrent" - - - label: "Read attribute: ActiveWiredFaults" - wait: "readAttribute" - attribute: "ActiveWiredFaults" - - - label: "Read attribute: BatVoltage" - wait: "readAttribute" - attribute: "BatVoltage" - - - label: "Read attribute: BatPercentRemaining" - wait: "readAttribute" - attribute: "BatPercentRemaining" - - - label: "Read attribute: BatTimeRemaining" - wait: "readAttribute" - attribute: "BatTimeRemaining" - - - label: "Read attribute: BatChargeLevel" - wait: "readAttribute" - attribute: "BatChargeLevel" - - - label: "Read attribute: BatReplacementNeeded" - wait: "readAttribute" - attribute: "BatReplacementNeeded" - - - label: "Read attribute: BatReplaceability" - wait: "readAttribute" - attribute: "BatReplaceability" - - - label: "Read attribute: BatPresent" - wait: "readAttribute" - attribute: "BatPresent" - - - label: "Read attribute: ActiveBatFaults" - wait: "readAttribute" - attribute: "ActiveBatFaults" - - - label: "Read attribute: BatReplacementDescription" - wait: "readAttribute" - attribute: "BatReplacementDescription" - - - label: "Read attribute: BatCommonDesignation" - wait: "readAttribute" - attribute: "BatCommonDesignation" - - - label: "Read attribute: BatANSIDesignation" - wait: "readAttribute" - attribute: "BatANSIDesignation" - - - label: "Read attribute: BatIECDesignation" - wait: "readAttribute" - attribute: "BatIECDesignation" - - - label: "Read attribute: BatApprovedChemistry" - wait: "readAttribute" - attribute: "BatApprovedChemistry" - - - label: "Read attribute: BatCapacity" - wait: "readAttribute" - attribute: "BatCapacity" - - - label: "Read attribute: BatQuantity" - wait: "readAttribute" - attribute: "BatQuantity" - - - label: "Read attribute: BatChargeState" - wait: "readAttribute" - attribute: "BatChargeState" - - - label: "Read attribute: BatTimeToFullCharge" - wait: "readAttribute" - attribute: "BatTimeToFullCharge" - - - label: "Read attribute: BatFunctionalWhileCharging" - wait: "readAttribute" - attribute: "BatFunctionalWhileCharging" - - - label: "Read attribute: BatChargingCurrent" - wait: "readAttribute" - attribute: "BatChargingCurrent" - - - label: "Read attribute: ActiveBatChargeFaults" - wait: "readAttribute" - attribute: "ActiveBatChargeFaults" - - - label: - "Configure TH such that it implements mandatory and none of the - optional attributes of the server-side of the cluster, and that it - also reflects this in global attributes such as FeatureMap and - AttributeList. Commission DUT to TH again" - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool powersource read feature-map 1 1 - verify the " feature-map response" on the TH (all-cluster-minimal-app) log: - [1678873672.092602][348369:348369] CHIP:IM: Received Read request - [1678873672.092651][348369:348369] CHIP:DMG: ReadRequestMessage = - [1678873672.092660][348369:348369] CHIP:DMG: { - [1678873672.092669][348369:348369] CHIP:DMG: AttributePathIBs = - [1678873672.092680][348369:348369] CHIP:DMG: [ - [1678873672.092706][348369:348369] CHIP:DMG: AttributePathIB = - [1678873672.092715][348369:348369] CHIP:DMG: { - [1678873672.092724][348369:348369] CHIP:DMG: Endpoint = 0x1, - [1678873672.092735][348369:348369] CHIP:DMG: Cluster = 0x2f, - [1678873672.092747][348369:348369] CHIP:DMG: Attribute = 0x0000_FFFC, - [1678873672.092757][348369:348369] CHIP:DMG: } - [1678873672.092770][348369:348369] CHIP:DMG: - [1678873672.092777][348369:348369] CHIP:DMG: ], - [1678873672.092791][348369:348369] CHIP:DMG: - [1678873672.092800][348369:348369] CHIP:DMG: isFabricFiltered = true, - [1678873672.092810][348369:348369] CHIP:DMG: InteractionModelRevision = 1 - [1678873672.092818][348369:348369] CHIP:DMG: }, - [1678873672.092858][348369:348369] CHIP:DMG: IM RH moving to [GeneratingReports] - [1678873672.092892][348369:348369] CHIP:DMG: Building Reports for ReadHandler - - - ./chip-tool powersource read attribute-list 1 0 - - verify the " attribute-list response" on the TH (all-cluster-minimal-app) log: - - [1659596771.124636][2409:2409] CHIP:IM: Received Read request - [1659596771.124765][2409:2409] CHIP:DMG: ReadRequestMessage = - [1659596771.124795][2409:2409] CHIP:DMG: { - [1659596771.124814][2409:2409] CHIP:DMG: AttributePathIBs = - [1659596771.124838][2409:2409] CHIP:DMG: [ - [1659596771.124859][2409:2409] CHIP:DMG: AttributePathIB = - [1659596771.124901][2409:2409] CHIP:DMG: { - [1659596771.124928][2409:2409] CHIP:DMG: Endpoint = 0x0, - [1659596771.124963][2409:2409] CHIP:DMG: Cluster = 0x2f, - [1659596771.124989][2409:2409] CHIP:DMG: Attribute = 0x0000_FFFB, - [1659596771.125020][2409:2409] CHIP:DMG: } - [1659596771.125045][2409:2409] CHIP:DMG: - [1659596771.125077][2409:2409] CHIP:DMG: ], - [1659596771.125102][2409:2409] CHIP:DMG: - [1659596771.125134][2409:2409] CHIP:DMG: isFabricFiltered = true, - [1659596771.125156][2409:2409] CHIP:DMG: InteractionModelRevision = 1 - [1659596771.125177][2409:2409] CHIP:DMG: }, - - - - ./chip-tool powersource read status 1 1 - - verify the " status response" on the TH (all-cluster-minimal-app) log: - - [1646155382.977534][33190:33190] CHIP:EM: Handling via exchange: 16568r, Delegate: 0xaaaace1730c8 - [1646155382.978021][33190:33190] CHIP:IM: Received Read request - [1646155382.978109][33190:33190] CHIP:DMG: ReadRequestMessage = - [1646155382.978143][33190:33190] CHIP:DMG: { - [1646155382.978167][33190:33190] CHIP:DMG: AttributePathIBs = - [1646155382.978204][33190:33190] CHIP:DMG: [ - [1646155382.978309][33190:33190] CHIP:DMG: AttributePathIB = - [1646155382.978369][33190:33190] CHIP:DMG: { - [1646155382.978408][33190:33190] CHIP:DMG: Endpoint = 0x1, - [1646155382.978459][33190:33190] CHIP:DMG: Cluster = 0x2f, - [1646155382.978513][33190:33190] CHIP:DMG: Attribute = 0x0000_0000, - [1646155382.978545][33190:33190] CHIP:DMG: } - [1646155382.978767][33190:33190] CHIP:DMG: - [1646155382.978804][33190:33190] CHIP:DMG: ], - [1646155382.978836][33190:33190] CHIP:DMG: - [1646155382.978872][33190:33190] CHIP:DMG: isFabricFiltered = false, - [1646155382.978901][33190:33190] CHIP:DMG: InteractionModelRevision = 1 - [1646155382.978927][33190:33190] CHIP:DMG: }, - [1646155382.978998][33190:33190] CHIP:DMG: IM RH moving to [GeneratingReports] - [1646155382.979658][33190:33190] CHIP:DMG: Cluster 2f, Attribute 0 is dirty - [1646155382.979729][33190:33190] CHIP:DMG: Reading attribute: Cluster=0x0000_002F Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1646155382.979764][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_002F e=1 p=v - [1646010346.974150][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v - - ./chip-tool powersource read order 1 1 - - verify the " order response" on the TH (all-cluster-minimal-app) log: - - [1653395573.862606][19412:19412] CHIP:IM: Received Read request - [1653395573.862690][19412:19412] CHIP:DMG: ReadRequestMessage = - [1653395573.862739][19412:19412] CHIP:DMG: { - [1653395573.862779][19412:19412] CHIP:DMG: AttributePathIBs = - [1653395573.862827][19412:19412] CHIP:DMG: [ - [1653395573.862872][19412:19412] CHIP:DMG: AttributePathIB = - [1653395573.862928][19412:19412] CHIP:DMG: { - [1653395573.862980][19412:19412] CHIP:DMG: Endpoint = 0x1, - [1653395573.863037][19412:19412] CHIP:DMG: Cluster = 0x2f, - [1653395573.863101][19412:19412] CHIP:DMG: Attribute = 0x0000_0001, - [1653395573.863161][19412:19412] CHIP:DMG: } - [1653395573.863217][19412:19412] CHIP:DMG: - [1653395573.863267][19412:19412] CHIP:DMG: ], - [1653395573.863319][19412:19412] CHIP:DMG: - [1653395573.863367][19412:19412] CHIP:DMG: isFabricFiltered = true, - [1653395573.863413][19412:19412] CHIP:DMG: InteractionModelRevision = 1 - [1653395573.863456][19412:19412] CHIP:DMG: }, - [1653395573.863589][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] - [1653395573.863720][19412:19412] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 - - ./chip-tool powersource read description 1 1 - - verify the " description response" on the TH (all-cluster-minimal-app) log: - - CHIP:IM: Received Read request - [1653395620.020314][19412:19412] CHIP:DMG: ReadRequestMessage = - [1653395620.020364][19412:19412] CHIP:DMG: { - [1653395620.020406][19412:19412] CHIP:DMG: AttributePathIBs = - [1653395620.020463][19412:19412] CHIP:DMG: [ - [1653395620.020511][19412:19412] CHIP:DMG: AttributePathIB = - [1653395620.020576][19412:19412] CHIP:DMG: { - [1653395620.020635][19412:19412] CHIP:DMG: Endpoint = 0x1, - [1653395620.020703][19412:19412] CHIP:DMG: Cluster = 0x2f, - [1653395620.020770][19412:19412] CHIP:DMG: Attribute = 0x0000_0002, - [1653395620.020833][19412:19412] CHIP:DMG: } - [1653395620.020893][19412:19412] CHIP:DMG: - [1653395620.020945][19412:19412] CHIP:DMG: ], - [1653395620.020999][19412:19412] CHIP:DMG: - [1653395620.021052][19412:19412] CHIP:DMG: isFabricFiltered = true, - [1653395620.021104][19412:19412] CHIP:DMG: InteractionModelRevision = 1 - [1653395620.021153][19412:19412] CHIP:DMG: }, - [1653395620.021252][19412:19412] CHIP:DMG: IM RH moving to [GeneratingReports] - - - ./chip-tool powersource read bat-charge-level 1 1 - - Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log - - [1663140804.059599][2414:2414] CHIP:IM: Received Read request - [1663140804.059679][2414:2414] CHIP:DMG: ReadRequestMessage = - [1663140804.059706][2414:2414] CHIP:DMG: { - [1663140804.059728][2414:2414] CHIP:DMG: AttributePathIBs = - [1663140804.059754][2414:2414] CHIP:DMG: [ - [1663140804.059779][2414:2414] CHIP:DMG: AttributePathIB = - [1663140804.059828][2414:2414] CHIP:DMG: { - [1663140804.059861][2414:2414] CHIP:DMG: Endpoint = 0x1, - [1663140804.059913][2414:2414] CHIP:DMG: Cluster = 0x2f, - [1663140804.059946][2414:2414] CHIP:DMG: Attribute = 0x0000_000E, - [1663140804.059976][2414:2414] CHIP:DMG: } - [1663140804.060006][2414:2414] CHIP:DMG: - [1663140804.060033][2414:2414] CHIP:DMG: ], - [1663140804.060060][2414:2414] CHIP:DMG: - [1663140804.060087][2414:2414] CHIP:DMG: isFabricFiltered = true, - [1663140804.060111][2414:2414] CHIP:DMG: InteractionModelRevision = 1 - [1663140804.060136][2414:2414] CHIP:DMG: }, - - - ./chip-tool powersource read bat-replacement-needed 1 1 - - Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log - - [1663141268.348233][2414:2414] CHIP:IM: Received Read request - [1663141268.348332][2414:2414] CHIP:DMG: ReadRequestMessage = - [1663141268.348388][2414:2414] CHIP:DMG: { - [1663141268.348418][2414:2414] CHIP:DMG: AttributePathIBs = - [1663141268.348465][2414:2414] CHIP:DMG: [ - [1663141268.348498][2414:2414] CHIP:DMG: AttributePathIB = - [1663141268.348545][2414:2414] CHIP:DMG: { - [1663141268.348584][2414:2414] CHIP:DMG: Endpoint = 0x1, - [1663141268.348637][2414:2414] CHIP:DMG: Cluster = 0x2f, - [1663141268.348685][2414:2414] CHIP:DMG: Attribute = 0x0000_000F, - [1663141268.348735][2414:2414] CHIP:DMG: } - [1663141268.348774][2414:2414] CHIP:DMG: - [1663141268.348820][2414:2414] CHIP:DMG: ], - [1663141268.348857][2414:2414] CHIP:DMG: - [1663141268.348904][2414:2414] CHIP:DMG: isFabricFiltered = true, - [1663141268.348938][2414:2414] CHIP:DMG: InteractionModelRevision = 1 - [1663141268.348982][2414:2414] CHIP:DMG: }, - [1663141268.349086][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] - [1663141268.349214][2414:2414] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1663141268.349251][2414:2414] CHIP:DMG: Cluster 2f, Attribute f is dirty - - - ./chip-tool powersource read bat-replaceability 1 1 - - Verify the ReadRequestMessage on TH(all-clusters-minimal-app) log - - - [1663141378.115928][2414:2414] CHIP:DMG: ReadRequestMessage = - [1663141378.115978][2414:2414] CHIP:DMG: { - [1663141378.116006][2414:2414] CHIP:DMG: AttributePathIBs = - [1663141378.116050][2414:2414] CHIP:DMG: [ - [1663141378.116080][2414:2414] CHIP:DMG: AttributePathIB = - [1663141378.116124][2414:2414] CHIP:DMG: { - [1663141378.116160][2414:2414] CHIP:DMG: Endpoint = 0x1, - [1663141378.116208][2414:2414] CHIP:DMG: Cluster = 0x2f, - [1663141378.116247][2414:2414] CHIP:DMG: Attribute = 0x0000_0010, - [1663141378.116294][2414:2414] CHIP:DMG: } - [1663141378.116330][2414:2414] CHIP:DMG: - [1663141378.116372][2414:2414] CHIP:DMG: ], - [1663141378.116407][2414:2414] CHIP:DMG: - [1663141378.116450][2414:2414] CHIP:DMG: isFabricFiltered = true, - [1663141378.116481][2414:2414] CHIP:DMG: InteractionModelRevision = 1 - [1663141378.116521][2414:2414] CHIP:DMG: }, - [1663141378.116621][2414:2414] CHIP:DMG: IM RH moving to [GeneratingReports] - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - - - Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 - - - ./chip-tool powersource read bat-charge-level 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read bat-replacement-needed 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read bat-replaceability 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && PS.C.AO-READ - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - verification: | - This cluster doesn"t have any writable attributes - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && PS.C.AO-WRITE - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_TMP_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TMP_2_1.yaml index 824b44afdbf6ca..6e854e88e0c719 100644 --- a/src/app/tests/suites/certification/Test_TC_TMP_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TMP_2_1.yaml @@ -36,6 +36,7 @@ tests: command: "readAttribute" attribute: "MinMeasuredValue" response: + saveAs: MinMeasuredValue constraints: type: int16s minValue: -27315 @@ -46,6 +47,7 @@ tests: command: "readAttribute" attribute: "MaxMeasuredValue" response: + saveAs: MaxMeasuredValue constraints: type: int16s minValue: -27314 @@ -58,8 +60,8 @@ tests: response: constraints: type: int16s - minValue: -27315 - maxValue: 32767 + minValue: MinMeasuredValue + maxValue: MaxMeasuredValue - label: "Read the optional attribute: Tolerance" PICS: TMP.S.A0003 diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml index 85507e8922470c..cd9acca7108024 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml @@ -567,7 +567,7 @@ tests: type: epoch_s - label: "Read OccupiedSetback attribute from the DUT" - PICS: TSTAT.S.F02 + PICS: TSTAT.S.F04 command: "readAttribute" attribute: "OccupiedSetback" response: @@ -577,7 +577,7 @@ tests: maxValue: 255 - label: "Read OccupiedSetbackMin attribute from the DUT" - PICS: TSTAT.S.F02 + PICS: TSTAT.S.F04 command: "readAttribute" attribute: "OccupiedSetbackMin" response: @@ -587,7 +587,7 @@ tests: maxValue: 255 - label: "Read OccupiedSetbackMax attribute from the DUT" - PICS: TSTAT.S.F02 + PICS: TSTAT.S.F04 command: "readAttribute" attribute: "OccupiedSetbackMax" response: diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml index 3f486c510e7463..758a449f4ebfc2 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml @@ -1565,35 +1565,63 @@ tests: - label: "Writes (sets back) default value of MinHeatSetpointLimit" command: "writeAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0015 + PICS: TSTAT.S.F01 && TSTAT.S.A0015 && TSTAT.S.A0003 + arguments: + value: AbsMinHeatSetpointLimitValue + + - label: "Writes (sets back) default value of MinHeatSetpointLimit" + command: "writeAttribute" + attribute: "MinHeatSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0015 && !TSTAT.S.A0003 arguments: value: 700 - label: "Writes (sets back)default value of MaxHeatSetpointLimit" command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05 + PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 + arguments: + value: AbsMaxHeatSetpointLimitValue + + - label: "Writes (sets back)default value of MaxHeatSetpointLimit" + command: "writeAttribute" + attribute: "MaxHeatSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 arguments: value: 3000 - label: "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C" command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05 + PICS: TSTAT.S.F01 && TSTAT.S.A0016 && TSTAT.S.F05 arguments: value: 2950 - label: "Writes (sets back) default value of MinCoolSetpointLimit" command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 + arguments: + value: AbsMinCoolSetpointLimitValue + + - label: "Writes (sets back) default value of MinCoolSetpointLimit" + command: "writeAttribute" + attribute: "MinCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 arguments: value: 1600 - label: "Writes (sets back) default value of MaxCoolSetpointLimit" command: "writeAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006 + arguments: + value: AbsMaxCoolSetpointLimitValue + + - label: "Writes (sets back) default value of MaxCoolSetpointLimit" + command: "writeAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006 arguments: value: 3200 @@ -1660,47 +1688,34 @@ tests: value: 25 - label: - "Reads ControlSequenceOfOperation from Server DUT and verifies that - the value is valid" + "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F01 is + true" command: "readAttribute" attribute: "ControlSequenceOfOperation" - PICS: TSTAT.S.F00 || TSTAT.S.F01 + PICS: TSTAT.S.F01 && !TSTAT.S.F00 response: constraints: - type: enum8 - minValue: 0 - maxValue: 5 - - #Uncomment once anyOf is supported - #- label: - # "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F01 is - # true" - # command: "readAttribute" - # attribute: "ControlSequenceOfOperation" - # PICS: TSTAT.S.F01 && !TSTAT.S.F00 - # response: - # constraints: - # anyOf: [0, 1] - - #- label: - # "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F00 is - # true" - # command: "readAttribute" - # attribute: "ControlSequenceOfOperation" - # PICS: TSTAT.S.F00 && !TSTAT.S.F01 - # response: - # constraints: - # anyOf: [2, 3] - - #- label: - # "Reads ControlSequenceOfOperation from Server DUT, if both TSTAT.S.F01 - # and TSTAT.S.F01 are true" - # command: "readAttribute" - # attribute: "ControlSequenceOfOperation" - # PICS: TSTAT.S.F00 && TSTAT.S.F01 - # response: - # constraints: - # anyOf: [4, 5] + anyOf: [0, 1] + + - label: + "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F00 is + true" + command: "readAttribute" + attribute: "ControlSequenceOfOperation" + PICS: TSTAT.S.F00 && !TSTAT.S.F01 + response: + constraints: + anyOf: [2, 3] + + - label: + "Reads ControlSequenceOfOperation from Server DUT, if both TSTAT.S.F01 + and TSTAT.S.F01 are true" + command: "readAttribute" + attribute: "ControlSequenceOfOperation" + PICS: TSTAT.S.F00 && TSTAT.S.F01 + response: + constraints: + anyOf: [4, 5] - label: "Write Attribute command for ControlSequenceOfOperation with a new diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml index 89bda28d296a86..5fe8cedaaafdbb 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml @@ -31,21 +31,57 @@ tests: - name: "nodeId" value: nodeId - #Issue #10811 if condition is required, need YAML support for this - #Issue 14396 - label: - "Reads ConfigStatus attribute from DUT, if (PA & LF) value of bit 3 - must be 1b else 0b & if (PA & TL) value of bit 4 must be 1b else 0b" - verification: | - ./chip-tool windowcovering read config-status 1 1 - [1650882400.614314][8634:8639] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0007 DataVersion: 366273182 - [1650882400.614428][8634:8639] CHIP:TOO: ConfigStatus: 27 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02 - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & + WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else 0b" + command: "readAttribute" + attribute: "ConfigStatus" + PICS: WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02 + response: + constraints: + type: bitmap8 + hasMasksSet: [0x8] + + - label: + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & + WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else 0b" + command: "readAttribute" + attribute: "ConfigStatus" + PICS: WNCV.S.A0007 && !WNCV.S.F00 && !WNCV.S.F02 + response: + constraints: + type: bitmap8 + hasMasksClear: [0x8] + + - label: + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & + WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else 0b," + command: "readAttribute" + attribute: "ConfigStatus" + PICS: WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04 + response: + constraints: + type: bitmap8 + hasMasksSet: [0x10] + + - label: + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & + WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else 0b," + command: "readAttribute" + attribute: "ConfigStatus" + PICS: WNCV.S.A0007 && !WNCV.S.F01 && !WNCV.S.F04 + response: + constraints: + type: bitmap8 + hasMasksClear: [0x10] + + - label: + "Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b + (operational)" + command: "readAttribute" + attribute: "ConfigStatus" + PICS: WNCV.S.A0007 + response: + constraints: + type: bitmap8 + hasMasksSet: [0x1] diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_2_4.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_2_4.yaml index f71709bbdf2684..15a5efde20ce0e 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_2_4.yaml @@ -31,22 +31,36 @@ tests: - name: "nodeId" value: nodeId - #Issue #10811 if condition is required, need YAML support for this - - label: "Reads Type attribute from DUT" - verification: | - ./chip-tool windowcovering read type 1 1 + - label: + "Reads Type attribute from DUT, If (WNCV.S.F00(LF) & !WNCV.S.F01(TL)) + value must be between [min=0, max=5] or equals to 9" + command: "readAttribute" + attribute: "Type" + PICS: WNCV.S.A0000 && WNCV.S.F00 && !WNCV.S.F01 + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 9 - Verify "Type " attribute If (WNCV.S.F00(LF) &!WNCV.S.F01(TL)) supports value must be between [min=0, max=5] or equals to 9, If (!WNCV.S.F00(LF) & - WNCV.S.F01(TL)) supports value must be only equal to 7, If (WNCV.S.F00(LF) & WNCV.S.F01(TL)) supports value is either 6 or 8 on the TH(Chip-tool) Log: + - label: + "Reads Type attribute from DUT, If (!WNCV.S.F00(LF) & WNCV.S.F01(TL)) + value must be only equal to 7" + command: "readAttribute" + attribute: "Type" + PICS: WNCV.S.A0000 && !WNCV.S.F00 && WNCV.S.F01 + response: + value: 7 + constraints: + type: enum8 - [1650882457.304607][8640:8645] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0000 DataVersion: 366273182 - [1650882457.304694][8640:8645] CHIP:TOO: Type: 8 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT && WNCV.S.A0000 - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: + "Reads Type attribute from DUT, If (WNCV.S.F00(LF) & WNCV.S.F01(TL)) + value is either 6 or 8" + command: "readAttribute" + attribute: "Type" + PICS: WNCV.S.A0000 && WNCV.S.F00 && WNCV.S.F01 + response: + constraints: + type: enum8 + anyOf: [6, 8] diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 52ca1f4b04899a..1feac1732e6522 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -1434,9 +1434,9 @@ DRLK.S.A0000=1 DRLK.S.A0001=1 DRLK.S.A0002=1 DRLK.S.A0003=1 -DRLK.S.A0004=1 -DRLK.S.A0005=1 -DRLK.S.A0006=1 +DRLK.S.A0004=0 +DRLK.S.A0005=0 +DRLK.S.A0006=0 DRLK.S.A0011=1 DRLK.S.A0012=1 DRLK.S.A0013=1 @@ -1465,7 +1465,31 @@ DRLK.S.A0030=1 DRLK.S.A0031=1 DRLK.S.A0032=1 DRLK.S.A0033=1 -DRLK.S.A0035=1 +DRLK.S.A0035=0 + +#ReadOnly attributes +DRLK.S.A0028.ReadOnly=1 +DRLK.S.A002c.ReadOnly=1 + +#write attributes +DRLK.S.A0004.Write=0 +DRLK.S.A0005.Write=0 +DRLK.S.A0006.Write=0 +DRLK.S.A0021.Write=1 +DRLK.S.A0022.Write=0 +DRLK.S.A0023.Write=1 +DRLK.S.A0024.Write=1 +DRLK.S.A0025.Write=1 +DRLK.S.A0028.Write=0 +DRLK.S.A0029.Write=1 +DRLK.S.A002a.Write=1 +DRLK.S.A002b.Write=1 +DRLK.S.A002c.Write=1 +DRLK.S.A0030.Write=1 +DRLK.S.A0031.Write=1 +DRLK.S.A0032.Write=1 +DRLK.S.A0033.Write=1 +DRLK.S.A0035.Write=0 #ReadOnly attributes DRLK.S.A0028.ReadOnly=1 @@ -1648,6 +1672,7 @@ BINFO.S.A0010=1 BINFO.S.A0011=0 BINFO.S.A0012=1 BINFO.S.A0013=1 +BINFO.S.A0014=1 BINFO.S.Afffd=1 BINFO.S.Afffc=1 BINFO.S.Afffb=1 @@ -1920,6 +1945,7 @@ MOD.S.A0003=1 MOD.S.A0004=1 MOD.S.A0005=1 MOD.S.C00.Rsp=1 +MOD.S.C01.Rsp=1 MOD.C=1 MOD.C.A0002=1 @@ -2002,6 +2028,7 @@ BRBINFO.S.A0010=0 BRBINFO.S.A0011=1 BRBINFO.S.A0012=0 BRBINFO.S.A0013=0 +BRBINFO.S.A0014=0 # Events BRBINFO.S.E00=0 @@ -2031,6 +2058,7 @@ BRBINFO.C.A0010=1 BRBINFO.C.A0011=1 BRBINFO.C.A0012=1 BRBINFO.C.A0013=1 +BRBINFO.C.A0014=1 # Events BRBINFO.C.E00=1 diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json index b0c40ab16561f4..9f352be98b3b17 100644 --- a/src/app/tests/suites/ciTests.json +++ b/src/app/tests/suites/ciTests.json @@ -34,6 +34,7 @@ "Test_TC_CC_6_1", "Test_TC_CC_6_2", "Test_TC_CC_6_3", + "Test_TC_CC_6_5", "Test_TC_CC_7_2", "Test_TC_CC_7_3", "Test_TC_CC_7_4", @@ -63,6 +64,7 @@ "Test_TC_FAN_2_2", "Test_TC_FAN_2_3", "Test_TC_FAN_2_4", + "Test_TC_FAN_2_5", "Test_TC_FAN_3_1", "Test_TC_FAN_3_2", "Test_TC_FAN_3_4" @@ -172,11 +174,7 @@ "SecureChannel": ["Test_TC_SC_5_1", "Test_TC_SC_5_2"], "Switch": ["Test_TC_SWTCH_1_1", "Test_TC_SWTCH_2_1"], "TemperatureMeasurement": ["Test_TC_TMP_1_1", "Test_TC_TMP_2_1"], - "Thermostat": [ - "Test_TC_TSTAT_1_1", - "Test_TC_TSTAT_2_1", - "Test_TC_TSTAT_2_2" - ], + "Thermostat": ["Test_TC_TSTAT_1_1", "Test_TC_TSTAT_2_1"], "ThermostatUserConfiguration": [ "Test_TC_TSUIC_1_1", "Test_TC_TSUIC_2_1", @@ -200,7 +198,6 @@ "Test_TC_WNCV_2_1", "Test_TC_WNCV_2_2", "Test_TC_WNCV_2_3", - "Test_TC_WNCV_2_4", "Test_TC_WNCV_2_5", "Test_TC_WNCV_3_1", "Test_TC_WNCV_3_2", @@ -274,7 +271,7 @@ "Test_TC_DRLK_2_5", "Test_TC_DRLK_2_6", "Test_TC_DRLK_2_7", - "Test_TC_DRLK_2_9", + "Test_TC_DRLK_2_8", "Test_TC_DRLK_2_11", "Test_TC_DRLK_2_12" ], diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index 215812bfef9f43..ab02c78ba99c73 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -182,12 +182,10 @@ ], "ModeSelect": [ "Test_TC_MOD_1_2", - "Test_TC_MOD_1_3", "Test_TC_MOD_2_1", - "Test_TC_MOD_2_2", + "Test_TC_MOD_2_3", "Test_TC_MOD_3_1", "Test_TC_MOD_3_2", - "Test_TC_MOD_3_3", "Test_TC_MOD_3_4" ], "OTASoftwareUpdate": [ @@ -245,24 +243,16 @@ "WindowCovering": [], "FlowMeasurement": ["Test_TC_FLW_2_2"], "OccupancySensing": ["Test_TC_OCC_3_1"], - "PowerSource": ["Test_TC_PS_2_2"], + "PowerSource": ["Test_TC_PS_2_2", "Test_TC_PS_3_1"], "BooleanState": ["Test_TC_BOOL_2_2"], "ColorControl": [ - "Test_TC_CC_2_2", "Test_TC_CC_3_1", "Test_TC_CC_7_1", "Test_TC_CC_9_1", "Test_TC_CC_9_2", "Test_TC_CC_9_3" ], - "DoorLock": [ - "Test_TC_DRLK_2_1", - "Test_TC_DRLK_2_8", - "Test_TC_DRLK_2_10", - "Test_TC_DRLK_3_1", - "Test_TC_DRLK_3_2", - "Test_TC_DRLK_3_3" - ], + "DoorLock": ["Test_TC_DRLK_2_10", "Test_TC_DRLK_3_2", "Test_TC_DRLK_3_3"], "LocalizationConfiguration": ["Test_TC_LCFG_2_1"], "LevelControl": ["Test_TC_LVL_8_1"], "OnOff": ["Test_TC_OO_2_3"], @@ -271,10 +261,7 @@ "TemperatureMeasurement": ["Test_TC_TMP_2_2"], "Thermostat": ["Test_TC_TSTAT_3_1", "Test_TC_TSTAT_3_2"], "ThermostatUserConfiguration": [], - "ThreadNetworkDiagnostics": [ - "Test_TC_DGTHREAD_2_5", - "Test_TC_DGTHREAD_3_1" - ], + "ThreadNetworkDiagnostics": ["Test_TC_DGTHREAD_2_5"], "Actions": ["Test_TC_ACT_2_1", "Test_TC_ACT_2_2", "Test_TC_ACT_3_2"], "TimeFormatLocalization": ["Test_TC_LTIME_2_1", "Test_TC_LTIME_3_1"], "UnitLocalization": [], diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 1549573a238b9a..2d73030806360f 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -69,6 +69,7 @@ class TestList : public Command printf("Test_TC_CC_6_1\n"); printf("Test_TC_CC_6_2\n"); printf("Test_TC_CC_6_3\n"); + printf("Test_TC_CC_6_5\n"); printf("Test_TC_CC_7_2\n"); printf("Test_TC_CC_7_3\n"); printf("Test_TC_CC_7_4\n"); @@ -114,6 +115,7 @@ class TestList : public Command printf("Test_TC_FAN_2_2\n"); printf("Test_TC_FAN_2_3\n"); printf("Test_TC_FAN_2_4\n"); + printf("Test_TC_FAN_2_5\n"); printf("Test_TC_FAN_3_1\n"); printf("Test_TC_FAN_3_2\n"); printf("Test_TC_FAN_3_4\n"); @@ -209,7 +211,6 @@ class TestList : public Command printf("Test_TC_TMP_2_1\n"); printf("Test_TC_TSTAT_1_1\n"); printf("Test_TC_TSTAT_2_1\n"); - printf("Test_TC_TSTAT_2_2\n"); printf("Test_TC_TSUIC_1_1\n"); printf("Test_TC_TSUIC_2_1\n"); printf("Test_TC_TSUIC_2_2\n"); @@ -231,7 +232,6 @@ class TestList : public Command printf("Test_TC_WNCV_2_1\n"); printf("Test_TC_WNCV_2_2\n"); printf("Test_TC_WNCV_2_3\n"); - printf("Test_TC_WNCV_2_4\n"); printf("Test_TC_WNCV_2_5\n"); printf("Test_TC_WNCV_3_1\n"); printf("Test_TC_WNCV_3_2\n"); @@ -297,7 +297,7 @@ class TestList : public Command printf("Test_TC_DRLK_2_5\n"); printf("Test_TC_DRLK_2_6\n"); printf("Test_TC_DRLK_2_7\n"); - printf("Test_TC_DRLK_2_9\n"); + printf("Test_TC_DRLK_2_8\n"); printf("Test_TC_DRLK_2_11\n"); printf("Test_TC_DRLK_2_12\n"); printf("TestGroupMessaging\n"); @@ -504,12 +504,10 @@ class ManualTestList : public Command printf("Test_TC_CADMIN_1_23\n"); printf("Test_TC_CADMIN_1_24\n"); printf("Test_TC_MOD_1_2\n"); - printf("Test_TC_MOD_1_3\n"); printf("Test_TC_MOD_2_1\n"); - printf("Test_TC_MOD_2_2\n"); + printf("Test_TC_MOD_2_3\n"); printf("Test_TC_MOD_3_1\n"); printf("Test_TC_MOD_3_2\n"); - printf("Test_TC_MOD_3_3\n"); printf("Test_TC_MOD_3_4\n"); printf("Test_TC_SU_1_1\n"); printf("Test_TC_SU_2_1\n"); @@ -558,17 +556,14 @@ class ManualTestList : public Command printf("Test_TC_FLW_2_2\n"); printf("Test_TC_OCC_3_1\n"); printf("Test_TC_PS_2_2\n"); + printf("Test_TC_PS_3_1\n"); printf("Test_TC_BOOL_2_2\n"); - printf("Test_TC_CC_2_2\n"); printf("Test_TC_CC_3_1\n"); printf("Test_TC_CC_7_1\n"); printf("Test_TC_CC_9_1\n"); printf("Test_TC_CC_9_2\n"); printf("Test_TC_CC_9_3\n"); - printf("Test_TC_DRLK_2_1\n"); - printf("Test_TC_DRLK_2_8\n"); printf("Test_TC_DRLK_2_10\n"); - printf("Test_TC_DRLK_3_1\n"); printf("Test_TC_DRLK_3_2\n"); printf("Test_TC_DRLK_3_3\n"); printf("Test_TC_LCFG_2_1\n"); @@ -581,7 +576,6 @@ class ManualTestList : public Command printf("Test_TC_TSTAT_3_1\n"); printf("Test_TC_TSTAT_3_2\n"); printf("Test_TC_DGTHREAD_2_5\n"); - printf("Test_TC_DGTHREAD_3_1\n"); printf("Test_TC_ACT_2_1\n"); printf("Test_TC_ACT_2_2\n"); printf("Test_TC_ACT_3_2\n"); @@ -10491,7 +10485,7 @@ class Test_TC_BRBINFO_2_1Suite : public TestCommand { public: Test_TC_BRBINFO_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_BRBINFO_2_1", 50, credsIssuerConfig) + TestCommand("Test_TC_BRBINFO_2_1", 53, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -10594,6 +10588,7 @@ class Test_TC_BRBINFO_2_1Suite : public TestCommand chip::CharSpan SerialNumberValue; char * UniqueIDValueBuffer = nullptr; chip::CharSpan UniqueIDValue; + chip::app::Clusters::BridgedDeviceBasicInformation::Structs::ProductAppearanceStruct::DecodableType ProductAppearancevalue; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -11009,6 +11004,25 @@ class Test_TC_BRBINFO_2_1Suite : public TestCommand VerifyOrReturn(CheckValueAsString("uniqueID", value, UniqueIDValue)); } break; + case 50: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::BridgedDeviceBasicInformation::Structs::ProductAppearanceStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "ProductAppearanceStruct", "ProductAppearanceStruct")); + ProductAppearancevalue = value; + } + break; + case 51: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 52: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::BridgedDeviceBasicInformation::Structs::ProductAppearanceStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -11407,6 +11421,32 @@ class Test_TC_BRBINFO_2_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasicInformation::Id, BridgedDeviceBasicInformation::Attributes::UniqueID::Id, true, chip::NullOptional); } + case 50: { + LogStep(50, "TH reads ProductAppearance from the DUT."); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasicInformation::Id, + BridgedDeviceBasicInformation::Attributes::ProductAppearance::Id, true, chip::NullOptional); + } + case 51: { + LogStep(51, "TH writes ProductAppearance to the DUT."); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::BridgedDeviceBasicInformation::Structs::ProductAppearanceStruct::Type value; + + value.finish = static_cast(3); + value.primaryColor.SetNonNull(); + value.primaryColor.Value() = static_cast(4); + + return WriteAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasicInformation::Id, + BridgedDeviceBasicInformation::Attributes::ProductAppearance::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 52: { + LogStep(52, "TH reads ProductAppearance attribute from the DUT."); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasicInformation::Id, + BridgedDeviceBasicInformation::Attributes::ProductAppearance::Id, true, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -19351,7 +19391,7 @@ class Test_TC_CC_6_3Suite : public TestCommand ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepColorTemperature::Type value; value.stepMode = static_cast(1); - value.stepSize = static_cast((ColorTempPhysicalMinMiredsValue + ColorTempPhysicalMaxMiredsValue) / 2); + value.stepSize = static_cast((ColorTempPhysicalMaxMiredsValue - ColorTempPhysicalMinMiredsValue) / 2); value.transitionTime = 200U; value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; @@ -19497,6 +19537,318 @@ class Test_TC_CC_6_3Suite : public TestCommand } }; +class Test_TC_CC_6_5Suite : public TestCommand +{ +public: + Test_TC_CC_6_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_5", 17, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_CC_6_5Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::app::DataModel::Nullable StartUpColorTemperatureMiredsValue; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + } + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + StartUpColorTemperatureMiredsValue = value; + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + if (StartUpColorTemperatureMiredsValue.IsNull()) + { + VerifyOrReturn(CheckValueNull("startUpColorTemperatureMireds", value)); + } + else + { + VerifyOrReturn(CheckValueNonNull("startUpColorTemperatureMireds", value)); + VerifyOrReturn(CheckValue("startUpColorTemperatureMireds.Value()", value.Value(), + StartUpColorTemperatureMiredsValue.Value())); + } + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperatureMireds", value, StartUpColorTemperatureMiredsValue)); + } + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorMode", value, 2U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U)); + } + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedColorMode", value, 2U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH writes 0 to the Options attribute"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint8_t value; + value = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 2: { + LogStep(2, "TH sends On command to DUT"); + VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::On::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional + + ); + } + case 3: { + LogStep(3, "TH reads ColorTemperatureMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTemperatureMireds::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads ColorTempPhysicalMinMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads ColorTempPhysicalMaxMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH reads from the DUT the StartUpColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.S.A4010 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::StartUpColorTemperatureMireds::Id, true, chip::NullOptional); + } + case 7: { + LogStep(7, "TH writes to StartUpColorTemperatureMireds attribute with value StartUpColorTemperatureMireds"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && CC.S.A4010 && CC.S.F04"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "TH reads StartUpColorTemperatureMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4010 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::StartUpColorTemperatureMireds::Id, true, chip::NullOptional); + } + case 9: { + LogStep(9, + "Verify that the DUT response contains StartUpColorTemperatureMireds that matches the " + "StartUpColorTemperatureMireds set in Step 2a"); + VerifyOrDo(!ShouldSkip("CC.S.A4010 && CC.S.F04 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "Reboot target device"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::Reboot::Type value; + return Reboot(kIdentityAlpha, value); + } + case 11: { + LogStep(11, "Reboot target device(DUT)"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Please reboot the DUT and enter 'y' after DUT startsgarbage: not in length on purpose", 52); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 13: { + LogStep(13, "TH reads from the DUT the StartUpColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::StartUpColorTemperatureMireds::Id, true, chip::NullOptional); + } + case 14: { + LogStep(14, "TH reads ColorTemperatureMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTemperatureMireds::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "TH reads ColorMode attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id, true, + chip::NullOptional); + } + case 16: { + LogStep(16, "TH reads EnhancedColorMode attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id, + true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_CC_7_2Suite : public TestCommand { public: @@ -31739,7 +32091,7 @@ class Test_TC_BINFO_1_1Suite : public TestCommand class Test_TC_BINFO_2_1Suite : public TestCommand { public: - Test_TC_BINFO_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_2_1", 68, credsIssuerConfig) + Test_TC_BINFO_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_2_1", 71, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -31845,6 +32197,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand char * UniqueIDValueBuffer = nullptr; chip::CharSpan UniqueIDValue; chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType CapabilityMinimaValue; + chip::app::Clusters::BasicInformation::Structs::ProductAppearanceStruct::DecodableType ProductAppearancevalue; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -32377,6 +32730,25 @@ class Test_TC_BINFO_2_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); } break; + case 68: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::BasicInformation::Structs::ProductAppearanceStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "ProductAppearanceStruct", "ProductAppearanceStruct")); + ProductAppearancevalue = value; + } + break; + case 69: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 70: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::BasicInformation::Structs::ProductAppearanceStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -32902,6 +33274,32 @@ class Test_TC_BINFO_2_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::CapabilityMinima::Id, true, chip::NullOptional); } + case 68: { + LogStep(68, "TH reads ProductAppearance from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, + BasicInformation::Attributes::ProductAppearance::Id, true, chip::NullOptional); + } + case 69: { + LogStep(69, "TH writes ProductAppearance to the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::BasicInformation::Structs::ProductAppearanceStruct::Type value; + + value.finish = static_cast(3); + value.primaryColor.SetNonNull(); + value.primaryColor.Value() = static_cast(4); + + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, + BasicInformation::Attributes::ProductAppearance::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 70: { + LogStep(70, "TH reads ProductAppearance attribute from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, + BasicInformation::Attributes::ProductAppearance::Id, true, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -36214,19 +36612,18 @@ class Test_TC_FAN_2_4Suite : public TestCommand } }; -class Test_TC_FAN_3_1Suite : public TestCommand +class Test_TC_FAN_2_5Suite : public TestCommand { public: - Test_TC_FAN_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_1", 15, credsIssuerConfig) + Test_TC_FAN_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_2_5", 2, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigPercentSetting", 0, UINT8_MAX, &mConfigPercentSetting); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_FAN_3_1Suite() {} + ~Test_TC_FAN_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -36237,7 +36634,6 @@ class Test_TC_FAN_3_1Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mConfigPercentSetting; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -36257,83 +36653,11 @@ class Test_TC_FAN_3_1Suite : public TestCommand shouldContinue = true; break; case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::FanControl::FanModeType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("fanMode", value, 3U)); - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("percentSetting", value)); - VerifyOrReturn(CheckValue("percentSetting.Value()", value.Value(), 0U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("percentCurrent", value, 0U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn( - CheckValue("percentCurrent", value, mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U)); - } - break; - case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("percentSetting", value)); - VerifyOrReturn(CheckValue("percentSetting.Value()", value.Value(), - mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U)); - } - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::FanControl::FanModeType value; + chip::app::Clusters::FanControl::AirflowDirectionEnum value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("fanMode", value, 0U)); + VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); } break; default: @@ -36352,116 +36676,16 @@ class Test_TC_FAN_3_1Suite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Step 1: Wait for the commissioned device to be retrieved"); + LogStep(0, "Wait for the commissioned device to be retrieved"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Step 2a: TH writes a supported FanMode attribute that is other than off to DUT"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::FanControl::FanModeType value; - value = static_cast(3); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, value, - chip::NullOptional, chip::NullOptional); - } - case 2: { - LogStep(2, "Wait 1000ms"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 3: { - LogStep(3, "Step 2b: TH reads from the DUT the the FanMode attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, true, - chip::NullOptional); - } - case 4: { - LogStep(4, "Step 2.1a: TH writes the Off value of FanMode attribute to DUT"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::FanControl::FanModeType value; - value = static_cast(0); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, value, - chip::NullOptional, chip::NullOptional); - } - case 5: { - LogStep(5, "Wait 1000ms"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "Step 2.1b: TH reads from the DUT the PercentSetting attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, true, - chip::NullOptional); - } - case 7: { - LogStep(7, "Step 2.1c: TH reads from the DUT the PercentCurrent attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentCurrent::Id, true, - chip::NullOptional); - } - case 8: { - LogStep(8, "Step 3a: TH writes PercentSetting attribute a non-zero value to DUT"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::DataModel::Nullable value; - value.SetNonNull(); - value.Value() = mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, value, - chip::NullOptional, chip::NullOptional); - } - case 9: { - LogStep(9, "Wait 1000ms"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "Step 3b: TH reads from the DUT the PercentCurrent attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentCurrent::Id, true, - chip::NullOptional); - } - case 11: { - LogStep(11, "Step 3c: TH reads from the DUT the PercentSetting attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, true, - chip::NullOptional); - } - case 12: { - LogStep(12, "Step 3.1a: TH writes PercentSetting attribute a zero value to DUT"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::DataModel::Nullable value; - value.SetNonNull(); - value.Value() = 0U; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, value, - chip::NullOptional, chip::NullOptional); - } - case 13: { - LogStep(13, "Wait 1000ms"); - VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "Step 3.1b: TH reads from the DUT the the FanMode attribute"); - VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, true, + LogStep(1, "TH reads from the DUT the the AirflowDirection attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::AirflowDirection::Id, true, chip::NullOptional); } } @@ -36469,19 +36693,19 @@ class Test_TC_FAN_3_1Suite : public TestCommand } }; -class Test_TC_FAN_3_2Suite : public TestCommand +class Test_TC_FAN_3_1Suite : public TestCommand { public: - Test_TC_FAN_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_2", 5, credsIssuerConfig) + Test_TC_FAN_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_1", 15, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigSpeedSetting", 0, UINT8_MAX, &mConfigSpeedSetting); + AddArgument("ConfigPercentSetting", 0, UINT8_MAX, &mConfigPercentSetting); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_FAN_3_2Suite() {} + ~Test_TC_FAN_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -36492,7 +36716,7 @@ class Test_TC_FAN_3_2Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mConfigSpeedSetting; + chip::Optional mConfigPercentSetting; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -36521,20 +36745,275 @@ class Test_TC_FAN_3_2Suite : public TestCommand case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::Nullable value; + chip::app::Clusters::FanControl::FanModeType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("speedSetting", value)); - VerifyOrReturn(CheckValue("speedSetting.Value()", value.Value(), - mConfigSpeedSetting.HasValue() ? mConfigSpeedSetting.Value() : 50U)); + VerifyOrReturn(CheckValue("fanMode", value, 3U)); } break; case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueNonNull("percentSetting", value)); + VerifyOrReturn(CheckValue("percentSetting.Value()", value.Value(), 0U)); + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("percentCurrent", value, 0U)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn( - CheckValue("speedCurrent", value, mConfigSpeedSetting.HasValue() ? mConfigSpeedSetting.Value() : 50U)); + CheckValue("percentCurrent", value, mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U)); + } + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueNonNull("percentSetting", value)); + VerifyOrReturn(CheckValue("percentSetting.Value()", value.Value(), + mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U)); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::FanControl::FanModeType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("fanMode", value, 0U)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Step 1: Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Step 2a: TH writes a supported FanMode attribute that is other than off to DUT"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::FanControl::FanModeType value; + value = static_cast(3); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 2: { + LogStep(2, "Wait 1000ms"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "Step 2b: TH reads from the DUT the the FanMode attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Step 2.1a: TH writes the Off value of FanMode attribute to DUT"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::FanControl::FanModeType value; + value = static_cast(0); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 5: { + LogStep(5, "Wait 1000ms"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 6: { + LogStep(6, "Step 2.1b: TH reads from the DUT the PercentSetting attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, true, + chip::NullOptional); + } + case 7: { + LogStep(7, "Step 2.1c: TH reads from the DUT the PercentCurrent attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentCurrent::Id, true, + chip::NullOptional); + } + case 8: { + LogStep(8, "Step 3a: TH writes PercentSetting attribute a non-zero value to DUT"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::Nullable value; + value.SetNonNull(); + value.Value() = mConfigPercentSetting.HasValue() ? mConfigPercentSetting.Value() : 30U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 9: { + LogStep(9, "Wait 1000ms"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "Step 3b: TH reads from the DUT the PercentCurrent attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentCurrent::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "Step 3c: TH reads from the DUT the PercentSetting attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, true, + chip::NullOptional); + } + case 12: { + LogStep(12, "Step 3.1a: TH writes PercentSetting attribute a zero value to DUT"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::Nullable value; + value.SetNonNull(); + value.Value() = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::PercentSetting::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 13: { + LogStep(13, "Wait 1000ms"); + VerifyOrDo(!ShouldSkip("FAN.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "Step 3.1b: TH reads from the DUT the the FanMode attribute"); + VerifyOrDo(!ShouldSkip("FAN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::FanMode::Id, true, + chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_FAN_3_2Suite : public TestCommand +{ +public: + Test_TC_FAN_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_2", 5, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigSpeedSetting", 0, UINT8_MAX, &mConfigSpeedSetting); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_FAN_3_2Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mConfigSpeedSetting; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueNonNull("speedSetting", value)); + VerifyOrReturn(CheckValue("speedSetting.Value()", value.Value(), + mConfigSpeedSetting.HasValue() ? mConfigSpeedSetting.Value() : 50U)); + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn( + CheckValue("speedCurrent", value, mConfigSpeedSetting.HasValue() ? mConfigSpeedSetting.Value() : 50U)); } break; default: @@ -46847,6 +47326,7 @@ class Test_TC_MEDIAINPUT_3_11Suite : public TestCommand AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("Index", 0, UINT8_MAX, &mIndex); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -46861,6 +47341,7 @@ class Test_TC_MEDIAINPUT_3_11Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; + chip::Optional mIndex; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -46894,7 +47375,7 @@ class Test_TC_MEDIAINPUT_3_11Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentInput", value, 1U)); + VerifyOrReturn(CheckValue("currentInput", value, mIndex.HasValue() ? mIndex.Value() : 1U)); } break; default: @@ -46929,18 +47410,18 @@ class Test_TC_MEDIAINPUT_3_11Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Select Input Command"); + LogStep(2, "TH sends SelectInput command to DUT to select an input by passing the index of the preferred input."); VerifyOrDo(!ShouldSkip("MEDIAINPUT.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaInput::Commands::SelectInput::Type value; - value.index = 1U; + value.index = mIndex.HasValue() ? mIndex.Value() : 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaInput::Id, MediaInput::Commands::SelectInput::Id, value, chip::NullOptional ); } case 3: { - LogStep(3, "Read current input list"); + LogStep(3, "TH reads _CurrentInput attribute from the DUT to show the current input selected."); VerifyOrDo(!ShouldSkip("MEDIAINPUT.S.A0001 && MEDIAINPUT.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaInput::Id, MediaInput::Attributes::CurrentInput::Id, true, chip::NullOptional); @@ -47069,6 +47550,7 @@ class Test_TC_MEDIAINPUT_3_13Suite : public TestCommand AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("Index", 0, UINT8_MAX, &mIndex); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -47083,6 +47565,7 @@ class Test_TC_MEDIAINPUT_3_13Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; + chip::Optional mIndex; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -47106,6 +47589,7 @@ class Test_TC_MEDIAINPUT_3_13Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; case 2: @@ -47144,11 +47628,11 @@ class Test_TC_MEDIAINPUT_3_13Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Rename Input Command"); + LogStep(2, "TH sends a RenameInput command to DUT to rename an input from the list returned in step 1"); VerifyOrDo(!ShouldSkip("MEDIAINPUT.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaInput::Commands::RenameInput::Type value; - value.index = 1U; + value.index = mIndex.HasValue() ? mIndex.Value() : 1U; value.name = chip::Span("A1garbage: not in length on purpose", 2); return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaInput::Id, MediaInput::Commands::RenameInput::Id, value, chip::NullOptional @@ -47351,13 +47835,15 @@ class Test_TC_CHANNEL_5_2Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads the ChannelList attribute"); + LogStep(1, "TH reads the ChannelList attribute from the DUT"); VerifyOrDo(!ShouldSkip("CHANNEL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::ChannelList::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "TH sends a ChangeChannelByNumber command"); + LogStep(2, + "TH sends a ChangeChannelByNumber command to the DUT with channel information (major and minor numbers) from " + "the list in step 1"); VerifyOrDo(!ShouldSkip("CHANNEL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Channel::Commands::ChangeChannelByNumber::Type value; @@ -47380,7 +47866,7 @@ class Test_TC_CHANNEL_5_2Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 4: { - LogStep(4, "Reads the CurrentChannel attribute"); + LogStep(4, "TH reads the CurrentChannel attribute from the DUT"); VerifyOrDo(!ShouldSkip("CHANNEL.S.A0002 && CHANNEL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::CurrentChannel::Id, true, chip::NullOptional); @@ -47517,19 +48003,19 @@ class Test_TC_CHANNEL_5_3Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Reads the ChannelList attribute from the DUT"); + LogStep(2, "TH reads the ChannelList attribute from the DUT"); VerifyOrDo(!ShouldSkip("CHANNEL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::ChannelList::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Reads the CurrentChannel attribute from the DUT"); + LogStep(3, "TH reads the CurrentChannel attribute from the DUT"); VerifyOrDo(!ShouldSkip("CHANNEL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::CurrentChannel::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Sends a SkipChannel command to the DUT"); + LogStep(4, "TH sends a SkipChannel command to the DUT with a value of 1"); VerifyOrDo(!ShouldSkip("CHANNEL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Channel::Commands::SkipChannel::Type value; @@ -47551,7 +48037,7 @@ class Test_TC_CHANNEL_5_3Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 6: { - LogStep(6, "Reads the CurrentChannel attribute from the DUT"); + LogStep(6, "TH reads the CurrentChannel attribute from the DUT"); VerifyOrDo(!ShouldSkip("CHANNEL.S.A0002 && CHANNEL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::CurrentChannel::Id, true, chip::NullOptional); @@ -49003,13 +49489,13 @@ class Test_TC_AUDIOOUTPUT_7_2Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads the OutputList attribute from the DUT"); + LogStep(1, "TH reads the OutputList attribute from the DUT"); VerifyOrDo(!ShouldSkip("AUDIOOUTPUT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), AudioOutput::Id, AudioOutput::Attributes::OutputList::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Sends a RenameOutput command"); + LogStep(2, "TH sends a RenameOutput command to the DUT with an index from the list in step 1 and the name 'CertTest'"); VerifyOrDo(!ShouldSkip("AUDIOOUTPUT.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AudioOutput::Commands::RenameOutput::Type value; @@ -49022,8 +49508,8 @@ class Test_TC_AUDIOOUTPUT_7_2Suite : public TestCommand } case 3: { LogStep(3, - "Reads the OutputList attribute from the DUT Verify that the output at the index provided in step 2 has the " - "name CertTest"); + "TH reads the OutputList attribute from the DUT. Verify that the output at the index provided in step 2 has " + "the name CertTest"); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && AUDIOOUTPUT.S.A0001 && AUDIOOUTPUT.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -53126,6 +53612,11 @@ class Test_TC_PRS_2_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + chip::app::DataModel::Nullable MinMeasuredValue; + chip::app::DataModel::Nullable MaxMeasuredValue; + chip::app::DataModel::Nullable MinScaledValue; + chip::app::DataModel::Nullable MaxScaledValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -53150,6 +53641,7 @@ class Test_TC_PRS_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MinMeasuredValue = value; } break; case 2: @@ -53160,6 +53652,7 @@ class Test_TC_PRS_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MaxMeasuredValue = value; } break; case 3: @@ -53168,8 +53661,8 @@ class Test_TC_PRS_2_1Suite : public TestCommand chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinMeasuredValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxMeasuredValue)); } break; case 4: @@ -53190,6 +53683,7 @@ class Test_TC_PRS_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MinScaledValue = value; } break; case 6: @@ -53200,6 +53694,7 @@ class Test_TC_PRS_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MaxScaledValue = value; } break; case 7: @@ -53208,8 +53703,8 @@ class Test_TC_PRS_2_1Suite : public TestCommand chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -32768)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinScaledValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxScaledValue)); } break; case 8: @@ -53255,23 +53750,23 @@ class Test_TC_PRS_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Read the mandatory attribute constraints: MeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, - PressureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); - } - case 2: { - LogStep(2, "Read the mandatory attribute constraints: MinMeasuredValue"); + LogStep(1, "Read the mandatory attribute constraints: MinMeasuredValue"); VerifyOrDo(!ShouldSkip("PRS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, PressureMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); } - case 3: { - LogStep(3, "Read the mandatory attribute constraints: MaxMeasuredValue"); + case 2: { + LogStep(2, "Read the mandatory attribute constraints: MaxMeasuredValue"); VerifyOrDo(!ShouldSkip("PRS.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); } + case 3: { + LogStep(3, "Read the mandatory attribute constraints: MeasuredValue"); + VerifyOrDo(!ShouldSkip("PRS.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, + PressureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } case 4: { LogStep(4, "Read the optional attribute: Tolerance"); VerifyOrDo(!ShouldSkip("PRS.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -53279,23 +53774,23 @@ class Test_TC_PRS_2_1Suite : public TestCommand PressureMeasurement::Attributes::Tolerance::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Read the optional attribute: ScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, - PressureMeasurement::Attributes::ScaledValue::Id, true, chip::NullOptional); - } - case 6: { - LogStep(6, "Read the optional attribute: MinScaledValue"); + LogStep(5, "Read the optional attribute: MinScaledValue"); VerifyOrDo(!ShouldSkip("PRS.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, PressureMeasurement::Attributes::MinScaledValue::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Read the optional attribute: MaxScaledValue"); + case 6: { + LogStep(6, "Read the optional attribute: MaxScaledValue"); VerifyOrDo(!ShouldSkip("PRS.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxScaledValue::Id, true, chip::NullOptional); } + case 7: { + LogStep(7, "Read the optional attribute: ScaledValue"); + VerifyOrDo(!ShouldSkip("PRS.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PressureMeasurement::Id, + PressureMeasurement::Attributes::ScaledValue::Id, true, chip::NullOptional); + } case 8: { LogStep(8, "Read the optional attribute: ScaledTolerance"); VerifyOrDo(!ShouldSkip("PRS.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -57763,6 +58258,9 @@ class Test_TC_TMP_2_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + chip::app::DataModel::Nullable MinMeasuredValue; + chip::app::DataModel::Nullable MaxMeasuredValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -57787,6 +58285,7 @@ class Test_TC_TMP_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MinMeasuredValue = value; } break; case 2: @@ -57797,6 +58296,7 @@ class Test_TC_TMP_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + MaxMeasuredValue = value; } break; case 3: @@ -57805,8 +58305,8 @@ class Test_TC_TMP_2_1Suite : public TestCommand chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinMeasuredValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxMeasuredValue)); } break; case 4: @@ -59391,19 +59891,19 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand } case 55: { LogStep(55, "Read OccupiedSetback attribute from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetback::Id, true, chip::NullOptional); } case 56: { LogStep(56, "Read OccupiedSetbackMin attribute from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMin::Id, true, chip::NullOptional); } case 57: { LogStep(57, "Read OccupiedSetbackMax attribute from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMax::Id, true, chip::NullOptional); } @@ -59484,2337 +59984,6 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand } }; -class Test_TC_TSTAT_2_2Suite : public TestCommand -{ -public: - Test_TC_TSTAT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_2_2", 162, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_TSTAT_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - int16_t MinCoolSetpointLimitValue; - int16_t MaxCoolSetpointLimitValue; - int8_t MinSetpointDeadBandValue; - int16_t MinHeatSetpointLimitValue; - int16_t UnoccupiedCoolingSetpointValue; - int16_t MaxHeatSetpointLimitValue; - int16_t OccupiedHeatingSetpointValue; - int16_t OccupiedCoolingSetpointValue; - int16_t AbsMinHeatSetpointLimitValue; - int16_t AbsMaxHeatSetpointLimitValue; - int16_t AbsMinCoolSetpointLimitValue; - int16_t AbsMaxCoolSetpointLimitValue; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - MinCoolSetpointLimitValue = value; - } - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - MaxCoolSetpointLimitValue = value; - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - MinSetpointDeadBandValue = value; - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - MinHeatSetpointLimitValue = value; - } - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - UnoccupiedCoolingSetpointValue = value; - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - MaxHeatSetpointLimitValue = value; - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - OccupiedHeatingSetpointValue = value; - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - OccupiedCoolingSetpointValue = value; - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - AbsMinHeatSetpointLimitValue = value; - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - AbsMaxHeatSetpointLimitValue = value; - } - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - AbsMinCoolSetpointLimitValue = value; - } - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - AbsMaxCoolSetpointLimitValue = value; - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimitValue)); - } - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); - } - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2500)); - } - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimitValue)); - } - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); - } - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2100)); - } - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 34: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 36: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 37: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 39: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 40: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimitValue)); - } - break; - case 41: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); - } - break; - case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 43: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("unoccupiedCoolingSetpoint", value, 2500)); - } - break; - case 44: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 48: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 49: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 50: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 51: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 52: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 53: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 54: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimitValue)); - } - break; - case 55: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); - } - break; - case 56: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 57: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("unoccupiedHeatingSetpoint", value, 2500)); - } - break; - case 58: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 59: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 60: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 61: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 62: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 63: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 64: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 65: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 66: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 67: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 68: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinHeatSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimitValue)); - } - break; - case 69: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); - } - break; - case 70: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 71: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minHeatSetpointLimit", value, 800)); - } - break; - case 72: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 73: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 74: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 75: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 76: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 77: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 78: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 79: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 80: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 81: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 82: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxHeatSetpointLimitValue)); - } - break; - case 83: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); - } - break; - case 84: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 85: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 86: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 87: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("maxHeatSetpointLimit", value, 2900)); - } - break; - case 88: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 89: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 90: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 91: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 92: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 93: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 94: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 95: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 96: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 97: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinCoolSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimitValue)); - } - break; - case 98: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); - } - break; - case 99: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 100: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minCoolSetpointLimit", value, 2000)); - } - break; - case 101: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 102: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 103: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 104: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 105: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 106: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 107: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 108: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 109: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 110: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimitValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxCoolSetpointLimitValue)); - } - break; - case 111: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); - } - break; - case 112: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 113: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("maxCoolSetpointLimit", value, 2000)); - } - break; - case 114: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 115: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 116: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 117: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 118: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 119: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 120: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 121: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 122: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 123: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 124: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 125: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 126: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 127: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 128: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 129: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); - } - break; - case 130: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 131: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minSetpointDeadBand", value, 5)); - } - break; - case 132: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 133: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 134: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 135: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 136: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Thermostat::ThermostatControlSequence value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); - } - break; - case 137: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 138: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Thermostat::ThermostatControlSequence value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("controlSequenceOfOperation", value, 2U)); - } - break; - case 139: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 140: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 141: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 142: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 143: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); - } - break; - case 144: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 145: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 146: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); - } - break; - case 147: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 148: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); - } - break; - case 149: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 150: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 151: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); - } - break; - case 152: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 153: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 154: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 155: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); - } - break; - case 156: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); - } - break; - case 157: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 158: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 159: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 160: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); - } - break; - case 161: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Saving value for comparision in step 2a read MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 2: { - LogStep(2, "Saving value for comparision in step 2a read MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 3: { - LogStep(3, "Saving value for comparision in step 2c read attribute MinSetpointDeadBand"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - true, chip::NullOptional); - } - case 4: { - LogStep(4, "Saving value for comparision in step 3a read MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 5: { - LogStep(5, "Saving value for comparision in step 3 reads UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 6: { - LogStep(6, "Saving value for comparision in step 3a read MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 7: { - LogStep(7, "Saving value for comparision in step3c read attribute OccupiedHeatingSetpoint"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 8: { - LogStep(8, "Saving value for comparision in step3c read attribute OccupiedCoolingSetpoint"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 9: { - LogStep(9, "Saving value for comparision in step 6a read attribute AbsMinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); - } - case 10: { - LogStep(10, "Saving value for comparision in step 7a read attribute AbsMaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); - } - case 11: { - LogStep(11, "Saving value for comparision in step 8a read attribute AbsMinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); - } - case 12: { - LogStep(12, "Saving value for comparision in step9a read attribute AbsMaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); - } - case 13: { - LogStep(13, "Read attribute OccupiedCoolingSetpoint from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 14: { - LogStep(14, "Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 15: { - LogStep(15, "Writes a value back that is different but valid for OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 16: { - LogStep(16, "Reads it back again to confirm the successful write of OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 17: { - LogStep(17, "Writes OccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 30; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 18: { - LogStep(18, "Writes OccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 19: { - LogStep(19, "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 20: { - LogStep(20, "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxCoolSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 21: { - LogStep(21, "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3200; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 22: { - LogStep(22, "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 23: { - LogStep(23, "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05 && !TSTAT.S.A0017"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 24: { - LogStep(24, "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 25: { - LogStep(25, - "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (OccupiedHeatingSetpoint + " - "MinSetpointDeadBand)) to OccupiedCoolingSetpoint attribute when Auto is enabled"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A0011 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 26: { - LogStep(26, "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 27: { - LogStep(27, "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 28: { - LogStep(28, "Writes a value back that is different but valid for OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2100; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 29: { - LogStep(29, "Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 30: { - LogStep(30, "Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 100; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 31: { - LogStep(31, "Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 32: { - LogStep(32, "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4010; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 33: { - LogStep(33, "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxHeatSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 34: { - LogStep(34, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05 && !TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 35: { - LogStep(35, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 36: { - LogStep(36, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 37: { - LogStep(37, - "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (OccupiedCoolingSetpoint - " - "MinSetpointDeadBand)) to OccupiedHeatingSetpoint attribute when Auto is enabled"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A0011 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 38: { - LogStep(38, "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 39: { - LogStep(39, "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 40: { - LogStep(40, "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 41: { - LogStep(41, "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 42: { - LogStep(42, "Writes a value back that is different but valid for UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 43: { - LogStep(43, "Reads it back again to confirm the successful write of UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 44: { - LogStep(44, "Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 45: { - LogStep(45, "Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 46: { - LogStep(46, "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4010; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 47: { - LogStep(47, "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxCoolSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 48: { - LogStep(48, "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3200; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 49: { - LogStep(49, "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 50: { - LogStep(50, - "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (UnoccupiedCoolingSetpoint + " - "MinSetpointDeadBand)) to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0013 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 51: { - LogStep(51, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 52: { - LogStep(52, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 53: { - LogStep(53, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 54: { - LogStep(54, "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 55: { - LogStep(55, "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 56: { - LogStep(56, "Writes a value back that is different but valid for UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 57: { - LogStep(57, "Reads it back again to confirm the successful write of UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 58: { - LogStep(58, "Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 100; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 59: { - LogStep(59, "Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 60: { - LogStep(60, "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4010; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 61: { - LogStep(61, "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxHeatSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 62: { - LogStep(62, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 63: { - LogStep(63, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 64: { - LogStep(64, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 65: { - LogStep(65, - "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (UnoccupiedCoolingSetpoint - " - "MinSetpointDeadBand)) to UnoccupiedHeatingSetpoint attribute when Auto is enabled."); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0013 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 66: { - LogStep(66, "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 67: { - LogStep(67, "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 68: { - LogStep(68, "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 && TSTAT.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 69: { - LogStep(69, "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016 && !TSTAT.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 70: { - LogStep(70, "Writes a value back that is different but valid for MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 800; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 71: { - LogStep(71, "Reads it back again to confirm the successful write of MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 72: { - LogStep(72, "Writes a value back that is different but violates the deadband"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 73: { - LogStep(73, "Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 100; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 74: { - LogStep(74, "Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 75: { - LogStep(75, "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4050; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 76: { - LogStep(76, "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxHeatSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 77: { - LogStep(77, "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && !TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 78: { - LogStep(78, "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 79: { - LogStep(79, - "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (MinCoolSetpointLimit - " - "MinSetpointDeadBand)) to MinHeatSetpointLimit attribute when Auto is enabled"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 80: { - LogStep(80, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 81: { - LogStep(81, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = AbsMinHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 82: { - LogStep(82, "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 && TSTAT.S.A0016"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 83: { - LogStep(83, "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip(" TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 && !TSTAT.S.A0016 "), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 84: { - LogStep(84, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 85: { - LogStep(85, "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 86: { - LogStep(86, "Writes a value back that is different but valid for MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2900; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 87: { - LogStep(87, "Reads it back again to confirm the successful write of MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - true, chip::NullOptional); - } - case 88: { - LogStep(88, "Writes MaxHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 100; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 89: { - LogStep(89, "Writes MaxHeatSetpointLimit to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 90: { - LogStep(90, "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0004"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 91: { - LogStep(91, "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0004"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(AbsMaxHeatSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 92: { - LogStep(92, "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 93: { - LogStep(93, "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = AbsMaxHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 94: { - LogStep(94, - "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(AbsMaxHeatSetpointLimit, (MaxCoolSetpointLimit - " - "MinSetpointDeadBand)) to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 95: { - LogStep(95, "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 96: { - LogStep(96, "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinHeatSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 97: { - LogStep(97, "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 98: { - LogStep(98, "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 99: { - LogStep(99, "Writes a value back that is different but valid for MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 100: { - LogStep(100, "Reads it back again to confirm the successful write of MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 101: { - LogStep(101, "Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 102: { - LogStep(102, "Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 103: { - LogStep(103, "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 104: { - LogStep(104, "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(MaxCoolSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 105: { - LogStep(105, "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3200; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 106: { - LogStep(106, "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MaxCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 107: { - LogStep(107, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 108: { - LogStep(108, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = AbsMinCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 109: { - LogStep(109, - "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(AbsMinCoolSetpointLimit, (MinHeatSetpointLimit + " - "MinSetpointDeadBand)) to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0015 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 110: { - LogStep(110, "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 111: { - LogStep(111, "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 112: { - LogStep(112, "Writes a value back that is different but valid for MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 113: { - LogStep(113, "Reads it back again to confirm the successful write of MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - true, chip::NullOptional); - } - case 114: { - LogStep(114, "Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 500; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 115: { - LogStep(115, "Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 116: { - LogStep(116, "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 4000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 117: { - LogStep(117, "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = static_cast(AbsMaxCoolSetpointLimitValue + 1000); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 118: { - LogStep(118, "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3200; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 119: { - LogStep(119, "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = AbsMaxCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 120: { - LogStep(120, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 121: { - LogStep(121, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 122: { - LogStep(122, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && !TSTAT.S.F05"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = MinCoolSetpointLimitValue; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 123: { - LogStep(123, - "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (MaxHeatSetpointLimit + " - "MinSetpointDeadBand)) to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0016 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 124: { - LogStep(124, "Writes (sets back) default value of MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 700; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 125: { - LogStep(125, "Writes (sets back)default value of MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 126: { - LogStep(126, "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2950; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 127: { - LogStep(127, "Writes (sets back) default value of MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 1600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 128: { - LogStep(128, "Writes (sets back) default value of MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 3200; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 129: { - LogStep(129, "Reads MinSetpointDeadBand attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - true, chip::NullOptional); - } - case 130: { - LogStep(130, "Writes a value back that is different but valid for MinSetpointDeadBand attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int8_t value; - value = 5; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 131: { - LogStep(131, "Reads it back again to confirm the successful write of MinSetpointDeadBand attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - true, chip::NullOptional); - } - case 132: { - LogStep(132, "Writes the value below MinSetpointDeadBand"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int8_t value; - value = -1; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 133: { - LogStep(133, "Writes the value above MinSetpointDeadBand "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int8_t value; - value = 30; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 134: { - LogStep(134, "Writes the min limit of MinSetpointDeadBand"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int8_t value; - value = 0; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 135: { - LogStep(135, "Writes the max limit of MinSetpointDeadBand"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int8_t value; - value = 25; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 136: { - LogStep(136, "Reads ControlSequenceOfOperation from Server DUT and verifies that the value is valid"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); - } - case 137: { - LogStep(137, "Write Attribute command for ControlSequenceOfOperation with a new valid value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::ThermostatControlSequence value; - value = static_cast(2); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::ControlSequenceOfOperation::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 138: { - LogStep(138, "Read it back again to confirm the successful write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); - } - case 139: { - LogStep(139, "Writes MaxHeatSetpointLimit attribute to default value of 2950 to meet deadband constraint"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2950; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - value, chip::NullOptional, chip::NullOptional); - } - case 140: { - LogStep(140, "Sets OccupiedCoolingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 141: { - LogStep(141, "Sets OccupiedHeatingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 142: { - LogStep(142, "Sends SetpointRaise Command Heat Only"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(0); - value.amount = -30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 143: { - LogStep(143, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 144: { - LogStep(144, "Sets OccupiedHeatingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 145: { - LogStep(145, "Sends SetpointRaise Command Heat Only"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(0); - value.amount = 30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 146: { - LogStep(146, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 147: { - LogStep(147, "Sends SetpointRaise Command Cool Only"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(1); - value.amount = -30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 148: { - LogStep(148, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 149: { - LogStep(149, "Sets OccupiedCoolingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 150: { - LogStep(150, "Sends SetpointRaise Command Cool Only"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(1); - value.amount = 30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 151: { - LogStep(151, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 152: { - LogStep(152, "Sets OccupiedCoolingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 153: { - LogStep(153, "Sets OccupiedHeatingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 154: { - LogStep(154, "Sends SetpointRaise Command Heat & Cool"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(2); - value.amount = -30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 155: { - LogStep(155, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 156: { - LogStep(156, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - case 157: { - LogStep(157, "Sets OccupiedCoolingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2600; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 158: { - LogStep(158, "Sets OccupiedHeatingSetpoint to default value"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - int16_t value; - value = 2000; - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, - chip::NullOptional); - } - case 159: { - LogStep(159, "Sends SetpointRaise Command Heat & Cool"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; - value.mode = static_cast(2); - value.amount = 30; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Commands::SetpointRaiseLower::Id, value, - chip::NullOptional - - ); - } - case 160: { - LogStep(160, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); - } - case 161: { - LogStep(161, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_TSUIC_1_1Suite : public TestCommand { public: @@ -67149,244 +65318,310 @@ class Test_TC_WNCV_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "1a: read the RO mandatory attribute default: Type"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Type::Id, true, - chip::NullOptional); + LogStep(1, "1a: read the RO mandatory attribute default: Type"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Type::Id, true, + chip::NullOptional); + } + case 2: { + LogStep(2, "1b: read the RO mandatory attribute default: ConfigStatus"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, + true, chip::NullOptional); + } + case 3: { + LogStep(3, "1c: read the RO mandatory attribute default: OperationalStatus"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::OperationalStatus::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "1d: read the RO mandatory attribute default: EndProductType"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id, + true, chip::NullOptional); + } + case 5: { + LogStep(5, "1e: read the RW mandatory attribute default: Mode"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Mode::Id, true, + chip::NullOptional); + } + case 6: { + LogStep(6, "1f: write a value into the RW mandatory attribute:: Mode"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::BitMask value; + value = static_cast>(0U); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Mode::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 7: { + LogStep(7, "2a: read the RO optional attribute default: TargetPositionLiftPercent100ths"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::TargetPositionLiftPercent100ths::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "2b: read the RO optional attribute default: TargetPositionTiltPercent100ths"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::TargetPositionTiltPercent100ths::Id, true, chip::NullOptional); + } + case 9: { + LogStep(9, "2c: read the RO optional attribute default: CurrentPositionLiftPercent100ths"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionLiftPercent100ths::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "2d: read the RO optional attribute default: CurrentPositionTiltPercent100ths"); + VerifyOrDo(!ShouldSkip("WNCV.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionTiltPercent100ths::Id, true, chip::NullOptional); + } + case 11: { + LogStep(11, "2e: read the RO optional attribute default: InstalledOpenLimitLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::InstalledOpenLimitLift::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "2f: read the RO optional attribute default: InstalledClosedLimitLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::InstalledClosedLimitLift::Id, true, chip::NullOptional); + } + case 13: { + LogStep(13, "2g: read the RO optional attribute default: InstalledOpenLimitTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::InstalledOpenLimitTilt::Id, true, chip::NullOptional); + } + case 14: { + LogStep(14, "2h: read the RO optional attribute default: InstalledClosedLimitTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::InstalledClosedLimitTilt::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "3a: read the RO mandatory attribute default: SafetyStatus"); + VerifyOrDo(!ShouldSkip("WNCV.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::SafetyStatus::Id, + true, chip::NullOptional); + } + case 16: { + LogStep(16, "3b: read the RO optional attribute default: PhysicalClosedLimitLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::PhysicalClosedLimitLift::Id, true, chip::NullOptional); + } + case 17: { + LogStep(17, "3c: read the RO optional attribute default: PhysicalClosedLimitTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::PhysicalClosedLimitTilt::Id, true, chip::NullOptional); + } + case 18: { + LogStep(18, "3d: read the RO optional attribute default: CurrentPositionLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0003 && !WNCV.S.A0010 && !WNCV.S.A0011"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionLift::Id, true, chip::NullOptional); + } + case 19: { + LogStep(19, "3d: read the RO optional attribute default: CurrentPositionLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0003 && WNCV.S.A0010 && WNCV.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionLift::Id, true, chip::NullOptional); + } + case 20: { + LogStep(20, "3e: read the RO optional attribute default: CurrentPositionTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0004 && !WNCV.S.A0012 && !WNCV.S.A0013"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionTilt::Id, true, chip::NullOptional); + } + case 21: { + LogStep(21, "3e: read the RO optional attribute default: CurrentPositionTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0004 && WNCV.S.A0012 && WNCV.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionTilt::Id, true, chip::NullOptional); + } + case 22: { + LogStep(22, "3f: read the RO optional attribute default: NumberOfActuationsLift"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::NumberOfActuationsLift::Id, true, chip::NullOptional); + } + case 23: { + LogStep(23, "3g: read the RO optional attribute default: NumberOfActuationsTilt"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::NumberOfActuationsTilt::Id, true, chip::NullOptional); + } + case 24: { + LogStep(24, "3h: read the RO optional attribute default: CurrentPositionLiftPercentage"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionLiftPercentage::Id, true, chip::NullOptional); + } + case 25: { + LogStep(25, "3i:read the RO optional attribute default: CurrentPositionTiltPercentage"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, + WindowCovering::Attributes::CurrentPositionTiltPercentage::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_WNCV_2_2Suite : public TestCommand +{ +public: + Test_TC_WNCV_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_WNCV_2_2", 6, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_WNCV_2_2Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::BitMask value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 8U)); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::BitMask value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8U)); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::BitMask value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 16U)); + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::BitMask value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16U)); + } + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::BitMask value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1U)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep( + 1, + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else 0b"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, + true, chip::NullOptional); } case 2: { - LogStep(2, "1b: read the RO mandatory attribute default: ConfigStatus"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 2, + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else 0b"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007 && !WNCV.S.F00 && !WNCV.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "1c: read the RO mandatory attribute default: OperationalStatus"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::OperationalStatus::Id, true, chip::NullOptional); + LogStep(3, + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else " + "0b,"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, + true, chip::NullOptional); } case 4: { - LogStep(4, "1d: read the RO mandatory attribute default: EndProductType"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id, + LogStep(4, + "Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else " + "0b,"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007 && !WNCV.S.F01 && !WNCV.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "1e: read the RW mandatory attribute default: Mode"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Mode::Id, true, - chip::NullOptional); - } - case 6: { - LogStep(6, "1f: write a value into the RW mandatory attribute:: Mode"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::BitMask value; - value = static_cast>(0U); - return WriteAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::Mode::Id, value, - chip::NullOptional, chip::NullOptional); - } - case 7: { - LogStep(7, "2a: read the RO optional attribute default: TargetPositionLiftPercent100ths"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::TargetPositionLiftPercent100ths::Id, true, chip::NullOptional); - } - case 8: { - LogStep(8, "2b: read the RO optional attribute default: TargetPositionTiltPercent100ths"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::TargetPositionTiltPercent100ths::Id, true, chip::NullOptional); - } - case 9: { - LogStep(9, "2c: read the RO optional attribute default: CurrentPositionLiftPercent100ths"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionLiftPercent100ths::Id, true, chip::NullOptional); - } - case 10: { - LogStep(10, "2d: read the RO optional attribute default: CurrentPositionTiltPercent100ths"); - VerifyOrDo(!ShouldSkip("WNCV.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionTiltPercent100ths::Id, true, chip::NullOptional); - } - case 11: { - LogStep(11, "2e: read the RO optional attribute default: InstalledOpenLimitLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::InstalledOpenLimitLift::Id, true, chip::NullOptional); - } - case 12: { - LogStep(12, "2f: read the RO optional attribute default: InstalledClosedLimitLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::InstalledClosedLimitLift::Id, true, chip::NullOptional); - } - case 13: { - LogStep(13, "2g: read the RO optional attribute default: InstalledOpenLimitTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::InstalledOpenLimitTilt::Id, true, chip::NullOptional); - } - case 14: { - LogStep(14, "2h: read the RO optional attribute default: InstalledClosedLimitTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::InstalledClosedLimitTilt::Id, true, chip::NullOptional); - } - case 15: { - LogStep(15, "3a: read the RO mandatory attribute default: SafetyStatus"); - VerifyOrDo(!ShouldSkip("WNCV.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::SafetyStatus::Id, + LogStep(5, "Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b (operational)"); + VerifyOrDo(!ShouldSkip("WNCV.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "3b: read the RO optional attribute default: PhysicalClosedLimitLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::PhysicalClosedLimitLift::Id, true, chip::NullOptional); - } - case 17: { - LogStep(17, "3c: read the RO optional attribute default: PhysicalClosedLimitTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::PhysicalClosedLimitTilt::Id, true, chip::NullOptional); - } - case 18: { - LogStep(18, "3d: read the RO optional attribute default: CurrentPositionLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0003 && !WNCV.S.A0010 && !WNCV.S.A0011"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionLift::Id, true, chip::NullOptional); - } - case 19: { - LogStep(19, "3d: read the RO optional attribute default: CurrentPositionLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0003 && WNCV.S.A0010 && WNCV.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionLift::Id, true, chip::NullOptional); - } - case 20: { - LogStep(20, "3e: read the RO optional attribute default: CurrentPositionTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0004 && !WNCV.S.A0012 && !WNCV.S.A0013"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionTilt::Id, true, chip::NullOptional); - } - case 21: { - LogStep(21, "3e: read the RO optional attribute default: CurrentPositionTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0004 && WNCV.S.A0012 && WNCV.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionTilt::Id, true, chip::NullOptional); - } - case 22: { - LogStep(22, "3f: read the RO optional attribute default: NumberOfActuationsLift"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::NumberOfActuationsLift::Id, true, chip::NullOptional); - } - case 23: { - LogStep(23, "3g: read the RO optional attribute default: NumberOfActuationsTilt"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::NumberOfActuationsTilt::Id, true, chip::NullOptional); - } - case 24: { - LogStep(24, "3h: read the RO optional attribute default: CurrentPositionLiftPercentage"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionLiftPercentage::Id, true, chip::NullOptional); - } - case 25: { - LogStep(25, "3i:read the RO optional attribute default: CurrentPositionTiltPercentage"); - VerifyOrDo(!ShouldSkip("WNCV.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), WindowCovering::Id, - WindowCovering::Attributes::CurrentPositionTiltPercentage::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_2_2Suite : public TestCommand -{ -public: - Test_TC_WNCV_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_WNCV_2_2", 2, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, - "Reads ConfigStatus attribute from DUT, if (PA & LF) value of bit 3 must be 1b else 0b & if (PA & TL) value of " - "bit 4 must be 1b else 0b"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } } return CHIP_NO_ERROR; } @@ -67693,87 +65928,6 @@ class Test_TC_WNCV_2_3Suite : public TestCommand } }; -class Test_TC_WNCV_2_4Suite : public TestCommand -{ -public: - Test_TC_WNCV_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_WNCV_2_4", 2, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_2_4Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Reads Type attribute from DUT"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_WNCV_2_5Suite : public TestCommand { public: @@ -91288,13 +89442,13 @@ class Test_TC_DGSW_1_1Suite : public TestCommand } case 10: { LogStep(10, "TH reads EventList from DUT"); - VerifyOrDo(!ShouldSkip("DGSW.S.F00 && DGSW.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DGSW.S.E00 && DGSW.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::EventList::Id, true, chip::NullOptional); } case 11: { LogStep(11, "TH reads EventList from DUT"); - VerifyOrDo(!ShouldSkip(" !DGSW.S.F00 && DGSW.S.Afffa "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip(" !DGSW.S.E00 && DGSW.S.Afffa "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::EventList::Id, true, chip::NullOptional); } @@ -100886,7 +99040,7 @@ class Test_TC_DRLK_2_3Suite : public TestCommand class Test_TC_DRLK_2_4Suite : public TestCommand { public: - Test_TC_DRLK_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_4", 12, credsIssuerConfig) + Test_TC_DRLK_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_4", 16, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -100984,16 +99138,29 @@ class Test_TC_DRLK_2_4Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); break; case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 9: + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -101002,10 +99169,10 @@ class Test_TC_DRLK_2_4Suite : public TestCommand VerifyOrReturn(CheckValue("lockState.Value()", value.Value(), 1U)); } break; - case 10: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 11: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; default: @@ -101094,17 +99261,17 @@ class Test_TC_DRLK_2_4Suite : public TestCommand ); } case 5: { - LogStep(5, "TH writes AutoRelockTime attribute value as 60 seconds on the DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH writes AutoRelockTime attribute value as 10 seconds on the DUT"); + VerifyOrDo(!ShouldSkip("DRLK.S.A0023.Write && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint32_t value; - value = 60UL; + value = 10UL; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id, value, chip::NullOptional, chip::NullOptional); } case 6: { LogStep(6, "TH writes AutoRelockTime attribute value as 60 seconds on the DUT"); - VerifyOrDo(!ShouldSkip(" !DRLK.S.A0023 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DRLK.S.A0023.Write && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint32_t value; value = 60UL; @@ -101112,8 +99279,39 @@ class Test_TC_DRLK_2_4Suite : public TestCommand chip::NullOptional, chip::NullOptional); } case 7: { - LogStep(7, "TH sends the Unlock with Timeout argument value as 60 seconds"); - VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "TH writes AutoRelockTime attribute value as 10 seconds on the DUT"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY && !DRLK.S.A0023.Write"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint32_t value; + value = 10UL; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 8: { + LogStep(8, "TH writes AutoRelockTime attribute value as 60 seconds on the DUT"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && !DRLK.S.A0023.Write"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint32_t value; + value = 60UL; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 9: { + LogStep(9, "TH sends the Unlock with Timeout argument value as 10 seconds"); + VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DoorLock::Commands::UnlockWithTimeout::Type value; + value.timeout = 10U; + value.PINCode.Emplace(); + value.PINCode.Value() = chip::ByteSpan(chip::Uint8::from_const_char("123456garbage: not in length on purpose"), 6); + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::UnlockWithTimeout::Id, value, + chip::Optional(1000), chip::NullOptional + + ); + } + case 10: { + LogStep(10, "TH sends the Unlock with Timeout argument value as 60 seconds"); + VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::UnlockWithTimeout::Type value; value.timeout = 60U; @@ -101124,22 +99322,30 @@ class Test_TC_DRLK_2_4Suite : public TestCommand ); } - case 8: { - LogStep(8, "Wait 60s"); - VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 11: { + LogStep(11, "Wait for AutoRelockTime Expires"); + VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 60000UL; + value.ms = 11000UL; return WaitForMs(kIdentityAlpha, value); } - case 9: { - LogStep(9, "TH reads LockState attribute"); + case 12: { + LogStep(12, "Wait for AutoRelockTime Expires"); + VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 70000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 13: { + LogStep(13, "TH reads LockState attribute"); VerifyOrDo(!ShouldSkip("DRLK.S.A0000 && DRLK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::LockState::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Cleanup the created user"); + case 14: { + LogStep(14, "Cleanup the created user"); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::ClearUser::Type value; value.userIndex = 1U; @@ -101148,8 +99354,8 @@ class Test_TC_DRLK_2_4Suite : public TestCommand ); } - case 11: { - LogStep(11, "Clean the created credential"); + case 15: { + LogStep(15, "Clean the created credential"); VerifyOrDo(!ShouldSkip("DRLK.S.C26.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; @@ -102176,10 +100382,10 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } }; -class Test_TC_DRLK_2_9Suite : public TestCommand +class Test_TC_DRLK_2_8Suite : public TestCommand { public: - Test_TC_DRLK_2_9Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_9", 21, credsIssuerConfig) + Test_TC_DRLK_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_8", 12, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -102187,7 +100393,7 @@ class Test_TC_DRLK_2_9Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DRLK_2_9Suite() {} + ~Test_TC_DRLK_2_8Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -102200,7 +100406,7 @@ class Test_TC_DRLK_2_9Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; - uint16_t NumberOfTotalUsersSupported; + uint16_t Current_NumberOfTotalUsersSupported; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -102220,8 +100426,18 @@ class Test_TC_DRLK_2_9Suite : public TestCommand break; case 1: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65534U)); + Current_NumberOfTotalUsersSupported = value; + } break; case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -102249,135 +100465,95 @@ class Test_TC_DRLK_2_9Suite : public TestCommand VerifyOrReturn(CheckValueNull("nextUserIndex", value.nextUserIndex)); } break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65534U)); - NumberOfTotalUsersSupported = value; - } - break; case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value.credentialExists", "boolean", "boolean")); - VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 1U)); - VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); - VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1U)); - VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); - VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1U)); - VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + VerifyOrReturn(CheckValue("clusterStatus", status.mClusterStatus.HasValue(), true)); + VerifyOrReturn(CheckValue("clusterStatus", status.mClusterStatus.Value(), 3)); break; case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 133U)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - } break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 2U)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 2U)); + VerifyOrReturn(CheckValueNonNull("userName", value.userName)); + VerifyOrReturn(CheckValueAsString("userName.Value()", value.userName.Value(), chip::CharSpan("", 0))); + VerifyOrReturn(CheckValueNull("userUniqueID", value.userUniqueID)); + VerifyOrReturn(CheckValueNonNull("userStatus", value.userStatus)); + VerifyOrReturn(CheckValue("userStatus.Value()", value.userStatus.Value(), 1U)); + VerifyOrReturn(CheckValueNonNull("userType", value.userType)); + VerifyOrReturn(CheckValue("userType.Value()", value.userType.Value(), 0U)); + VerifyOrReturn(CheckValueNonNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValue("credentialRule.Value()", value.credentialRule.Value(), 0U)); + VerifyOrReturn(CheckValueNonNull("credentials", value.credentials)); + { + auto iter_1 = value.credentials.Value().begin(); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 0)); + } + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1U)); + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1U)); + VerifyOrReturn(CheckValueNull("nextUserIndex", value.nextUserIndex)); } break; case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("credentialExists", value.credentialExists, false)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); - VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); - VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 2U)); + VerifyOrReturn(CheckValueNonNull("userName", value.userName)); + VerifyOrReturn(CheckValueAsString("userName.Value()", value.userName.Value(), chip::CharSpan("", 0))); + VerifyOrReturn(CheckValueNull("userUniqueID", value.userUniqueID)); + VerifyOrReturn(CheckValueNonNull("userStatus", value.userStatus)); + VerifyOrReturn(CheckValue("userStatus.Value()", value.userStatus.Value(), 1U)); + VerifyOrReturn(CheckValueNonNull("userType", value.userType)); + VerifyOrReturn(CheckValue("userType.Value()", value.userType.Value(), 0U)); + VerifyOrReturn(CheckValueNonNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValue("credentialRule.Value()", value.credentialRule.Value(), 0U)); + VerifyOrReturn(CheckValueNonNull("credentials", value.credentials)); + { + auto iter_1 = value.credentials.Value().begin(); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 0)); + } + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1U)); + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1U)); + VerifyOrReturn(CheckValueNull("nextUserIndex", value.nextUserIndex)); } break; - case 15: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("credentialExists", value.credentialExists, false)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); - VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); - VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); - } - break; - case 17: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("credentialExists", value.credentialExists, false)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 1U)); + VerifyOrReturn(CheckValueNull("userName", value.userName)); + VerifyOrReturn(CheckValueNull("userUniqueID", value.userUniqueID)); + VerifyOrReturn(CheckValueNull("userStatus", value.userStatus)); + VerifyOrReturn(CheckValueNull("userType", value.userType)); + VerifyOrReturn(CheckValueNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValueNull("credentials", value.credentials)); VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); - VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); + VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); } break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -102401,7 +100577,16 @@ class Test_TC_DRLK_2_9Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Create new user with default parameters"); + LogStep(1, "TH reads NumberOfTotalUsers Supported attribute and saves for future use."); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, + DoorLock::Attributes::NumberOfTotalUsersSupported::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, + "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 UserName as xxx " + "UserUniqueID as 6452 UserStatus as 1 UserType as 0 CredentialRule as 0"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::SetUser::Type value; value.operationType = static_cast(0); @@ -102421,8 +100606,10 @@ class Test_TC_DRLK_2_9Suite : public TestCommand ); } - case 2: { - LogStep(2, "Read the user back and verify its fields"); + case 3: { + LogStep(3, "TH sends Get User Command to DUT with UserIndex as 1"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; @@ -102431,170 +100618,43 @@ class Test_TC_DRLK_2_9Suite : public TestCommand ); } - case 3: { - LogStep(3, "TH reads NumberOfTotalUsersSupported attribute and saves for future use."); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, - DoorLock::Attributes::NumberOfTotalUsersSupported::Id, true, chip::NullOptional); - } case 4: { - LogStep(4, "TH sends Set Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; - value.operationType = static_cast(0); - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 1U; - - value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("123456garbage: not in length on purpose"), 6); - value.userIndex.SetNonNull(); - value.userIndex.Value() = 1U; - value.userStatus.SetNull(); - value.userType.SetNull(); - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, - chip::Optional(10000), chip::NullOptional - - ); - } - case 5: { - LogStep(5, "TH sends Get Credential Status Command"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 1U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value, - chip::NullOptional - - ); - } - case 6: { - LogStep(6, "TH sends Set Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, + "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 UserName as xxx " + "UserUniqueID as 6452 UserStatus as 1 UserType as 10 (Invalid value) CredentialRule as 3"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + chip::app::Clusters::DoorLock::Commands::SetUser::Type value; value.operationType = static_cast(0); - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 2U; - - value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("4321garbage: not in length on purpose"), 4); - value.userIndex.SetNull(); + value.userIndex = 2U; + value.userName.SetNonNull(); + value.userName.Value() = chip::Span("xxxgarbage: not in length on purpose", 3); + value.userUniqueID.SetNonNull(); + value.userUniqueID.Value() = 6452UL; value.userStatus.SetNonNull(); - value.userStatus.Value() = static_cast(5); + value.userStatus.Value() = static_cast(1); value.userType.SetNonNull(); value.userType.Value() = static_cast(10); - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, - chip::Optional(10000), chip::NullOptional - - ); - } - case 7: { - LogStep(7, "TH sends Set Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; - value.operationType = static_cast(0); - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 2U; - - value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("123456garbage: not in length on purpose"), 6); - value.userIndex.SetNull(); - value.userStatus.SetNull(); - value.userType.SetNull(); - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, - chip::Optional(10000), chip::NullOptional - - ); - } - case 8: { - LogStep(8, - "TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response command with " - "status as DUPLICATE or OCCUPIED"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 9: { - LogStep(9, - "TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response command with " - "response as OCCUPIED if the CredentialIndex is repeated"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 10: { - LogStep(10, - "TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response command with " - "response as OCCUPIED if the CredentialIndex is repeated"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 11: { - LogStep(11, "TH sends Clear Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; - value.credential.SetNonNull(); - - value.credential.Value().credentialType = static_cast(1); - value.credential.Value().credentialIndex = 1U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, + value.credentialRule.SetNonNull(); + value.credentialRule.Value() = static_cast(3); + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetUser::Id, value, chip::Optional(10000), chip::NullOptional ); } - case 12: { - LogStep(12, "TH sends Get Credential Status Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 1U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value, - chip::NullOptional - - ); - } - case 13: { - LogStep(13, "TH sends Set User Command to DUT"); + case 5: { + LogStep(5, + "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 (Same as step " + "2) UserName as xxx UserUniqueID as 8965 UserStatus as 1 UserType as 0 CredentialRule as 0"); VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::SetUser::Type value; value.operationType = static_cast(0); - value.userIndex = 2U; + value.userIndex = 1U; value.userName.SetNonNull(); value.userName.Value() = chip::Span("xxxgarbage: not in length on purpose", 3); value.userUniqueID.SetNonNull(); - value.userUniqueID.Value() = 6452UL; + value.userUniqueID.Value() = 8965UL; value.userStatus.SetNonNull(); value.userStatus.Value() = static_cast(1); value.userType.SetNonNull(); @@ -102606,89 +100666,71 @@ class Test_TC_DRLK_2_9Suite : public TestCommand ); } - case 14: { - LogStep(14, "TH sends Set Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 6: { + LogStep(6, + "TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 UserName as " + "NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + chip::app::Clusters::DoorLock::Commands::SetUser::Type value; value.operationType = static_cast(0); - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 1U; - - value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("123456garbage: not in length on purpose"), 6); - value.userIndex.SetNonNull(); - value.userIndex.Value() = 2U; + value.userIndex = 2U; + value.userName.SetNull(); + value.userUniqueID.SetNull(); value.userStatus.SetNull(); value.userType.SetNull(); - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, - chip::Optional(10000), chip::NullOptional - - ); - } - case 15: { - LogStep(15, "TH sends Clear Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; - value.credential.SetNonNull(); - - value.credential.Value().credentialType = static_cast(1); - value.credential.Value().credentialIndex = 65534U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, + value.credentialRule.SetNull(); + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetUser::Id, value, chip::Optional(10000), chip::NullOptional ); } - case 16: { - LogStep(16, "TH sends Get Credential Status Command"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx"), + case 7: { + LogStep(7, "TH sends Get User Command to DUT with UserIndex as 2"); + VerifyOrDo(!ShouldSkip("DRLK.S.C1a.Rsp && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 65534U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value, + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 2U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value, chip::NullOptional ); } - case 17: { - LogStep(17, "TH sends Get Credential Status Command"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 8: { + LogStep(8, + "TH sends Set User Command to DUT with the following values: OperationType as 2 UserIndex as 2 UserName as " + "NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 1U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value, - chip::NullOptional + chip::app::Clusters::DoorLock::Commands::SetUser::Type value; + value.operationType = static_cast(2); + value.userIndex = 2U; + value.userName.SetNull(); + value.userUniqueID.SetNull(); + value.userStatus.SetNull(); + value.userType.SetNull(); + value.credentialRule.SetNull(); + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetUser::Id, value, + chip::Optional(10000), chip::NullOptional ); } - case 18: { - LogStep(18, "TH sends Clear Credential Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 9: { + LogStep(9, "TH sends Get User Command to DUT with the UserIndex as 2"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; - value.credential.SetNonNull(); - - value.credential.Value().credentialType = static_cast(8); - value.credential.Value().credentialIndex = 2U; - - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, - chip::Optional(10000), chip::NullOptional + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 2U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value, + chip::NullOptional ); } - case 19: { - LogStep(19, "Cleanup the first created user"); + case 10: { + LogStep(10, "TH sends Clear User Command to DUT with the UserIndex as 1"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1d.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::ClearUser::Type value; value.userIndex = 1U; @@ -102697,13 +100739,15 @@ class Test_TC_DRLK_2_9Suite : public TestCommand ); } - case 20: { - LogStep(20, "Cleanup the second created user"); + case 11: { + LogStep(11, "TH sends Get User Command to DUT with the UserIndex as 1"); + VerifyOrDo(!ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DoorLock::Commands::ClearUser::Type value; - value.userIndex = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearUser::Id, value, - chip::Optional(10000), chip::NullOptional + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 1U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value, + chip::NullOptional ); } @@ -123204,61 +121248,6 @@ class Test_TC_MOD_1_2Suite : public TestCommand } }; -class Test_TC_MOD_1_3Suite : public TestCommand -{ -public: - Test_TC_MOD_1_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_1_3", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_MOD_1_3Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - class Test_TC_MOD_2_1Suite : public TestCommand { public: @@ -123314,10 +121303,10 @@ class Test_TC_MOD_2_1Suite : public TestCommand } }; -class Test_TC_MOD_2_2Suite : public TestCommand +class Test_TC_MOD_2_3Suite : public TestCommand { public: - Test_TC_MOD_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_2", 0, credsIssuerConfig) + Test_TC_MOD_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -123325,7 +121314,7 @@ class Test_TC_MOD_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_2_2Suite() {} + ~Test_TC_MOD_2_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -123479,61 +121468,6 @@ class Test_TC_MOD_3_2Suite : public TestCommand } }; -class Test_TC_MOD_3_3Suite : public TestCommand -{ -public: - Test_TC_MOD_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_3", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_MOD_3_3Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - class Test_TC_MOD_3_4Suite : public TestCommand { public: @@ -126292,10 +124226,10 @@ class Test_TC_PS_2_2Suite : public TestCommand } }; -class Test_TC_BOOL_2_2Suite : public TestCommand +class Test_TC_PS_3_1Suite : public TestCommand { public: - Test_TC_BOOL_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_2_2", 0, credsIssuerConfig) + Test_TC_PS_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_PS_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -126303,7 +124237,7 @@ class Test_TC_BOOL_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BOOL_2_2Suite() {} + ~Test_TC_PS_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -126347,10 +124281,10 @@ class Test_TC_BOOL_2_2Suite : public TestCommand } }; -class Test_TC_CC_2_2Suite : public TestCommand +class Test_TC_BOOL_2_2Suite : public TestCommand { public: - Test_TC_CC_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_2_2", 0, credsIssuerConfig) + Test_TC_BOOL_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -126358,7 +124292,7 @@ class Test_TC_CC_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_2_2Suite() {} + ~Test_TC_BOOL_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -130244,116 +128178,6 @@ class Test_TC_CC_9_3Suite : public TestCommand } }; -class Test_TC_DRLK_2_1Suite : public TestCommand -{ -public: - Test_TC_DRLK_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_1", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DRLK_2_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DRLK_2_8Suite : public TestCommand -{ -public: - Test_TC_DRLK_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_2_8", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DRLK_2_8Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - class Test_TC_DRLK_2_10Suite : public TestCommand { public: @@ -130409,61 +128233,6 @@ class Test_TC_DRLK_2_10Suite : public TestCommand } }; -class Test_TC_DRLK_3_1Suite : public TestCommand -{ -public: - Test_TC_DRLK_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_3_1", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DRLK_3_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - class Test_TC_DRLK_3_2Suite : public TestCommand { public: @@ -132624,285 +130393,26 @@ class Test_TC_RH_2_2Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads constraints of attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); - } - case 2: { - LogStep(2, "Reads constraints of attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); - } - case 3: { - LogStep(3, "Reads MeasuredValue attribute from DUT"); - VerifyOrDo(!ShouldSkip("RH.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); - } - case 4: { - LogStep(4, "Operate on device to change the relative humidity significantly"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 5: { - LogStep(5, "Read the mandatory attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0000 && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_2_2Suite : public TestCommand -{ -public: - Test_TC_SWTCH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_2_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_SWTCH_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_3_2Suite : public TestCommand -{ -public: - Test_TC_SWTCH_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_3_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_SWTCH_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_TMP_2_2Suite : public TestCommand -{ -public: - Test_TC_TMP_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_2_2", 6, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_TMP_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::app::DataModel::Nullable valueBeforeChange; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32766)); - } - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - valueBeforeChange = value; - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - VerifyOrReturn(CheckConstraintNotValue("value", value, valueBeforeChange)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Read the mandatory attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); + LogStep(1, "Reads constraints of attribute: MinMeasuredValue"); + VerifyOrDo(!ShouldSkip("RH.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Read the mandatory attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + LogStep(2, "Reads constraints of attribute: MaxMeasuredValue"); + VerifyOrDo(!ShouldSkip("RH.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); } case 3: { LogStep(3, "Reads MeasuredValue attribute from DUT"); - VerifyOrDo(!ShouldSkip("TMP.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("RH.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Operate on device to change the temperature significantly"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Operate on device to change the relative humidity significantly"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -132912,19 +130422,19 @@ class Test_TC_TMP_2_2Suite : public TestCommand } case 5: { LogStep(5, "Read the mandatory attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0000 && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("RH.S.A0000 && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); } } return CHIP_NO_ERROR; } }; -class Test_TC_TSTAT_3_1Suite : public TestCommand +class Test_TC_SWTCH_2_2Suite : public TestCommand { public: - Test_TC_TSTAT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_1", 0, credsIssuerConfig) + Test_TC_SWTCH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -132932,7 +130442,7 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_1Suite() {} + ~Test_TC_SWTCH_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -132976,10 +130486,10 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand } }; -class Test_TC_TSTAT_3_2Suite : public TestCommand +class Test_TC_SWTCH_3_2Suite : public TestCommand { public: - Test_TC_TSTAT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_2", 0, credsIssuerConfig) + Test_TC_SWTCH_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -132987,7 +130497,7 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_2Suite() {} + ~Test_TC_SWTCH_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -133031,11 +130541,10 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand } }; -class Test_TC_DGTHREAD_2_5Suite : public TestCommand +class Test_TC_TMP_2_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_2_5", 0, credsIssuerConfig) + Test_TC_TMP_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_2_2", 6, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -133043,7 +130552,156 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_2_5Suite() {} + ~Test_TC_TMP_2_2Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::app::DataModel::Nullable valueBeforeChange; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32766)); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + valueBeforeChange = value; + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintNotValue("value", value, valueBeforeChange)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Read the mandatory attribute: MinMeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Read the mandatory attribute: MaxMeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Reads MeasuredValue attribute from DUT"); + VerifyOrDo(!ShouldSkip("TMP.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Operate on device to change the temperature significantly"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 5: { + LogStep(5, "Read the mandatory attribute: MeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0000 && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_TSTAT_3_1Suite : public TestCommand +{ +public: + Test_TC_TSTAT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_1", 0, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_TSTAT_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -133087,11 +130745,10 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand } }; -class Test_TC_DGTHREAD_3_1Suite : public TestCommand +class Test_TC_TSTAT_3_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_1", 0, credsIssuerConfig) + Test_TC_TSTAT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -133099,7 +130756,63 @@ class Test_TC_DGTHREAD_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_1Suite() {} + ~Test_TC_TSTAT_3_2Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + {} + return CHIP_NO_ERROR; + } +}; + +class Test_TC_DGTHREAD_2_5Suite : public TestCommand +{ +public: + Test_TC_DGTHREAD_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_2_5", 0, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DGTHREAD_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -136962,6 +134675,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137007,6 +134721,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137102,7 +134817,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137124,7 +134838,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137190,7 +134903,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137386,12 +135099,10 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137440,17 +135151,14 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -137463,7 +135171,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 9db57f23d457d9..bf0c57cbdab961 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -62,6 +62,7 @@ class TestList : public Command { printf("Test_TC_CC_5_2\n"); printf("Test_TC_CC_5_3\n"); printf("Test_TC_CC_6_1\n"); + printf("Test_TC_CC_6_5\n"); printf("Test_TC_CC_7_3\n"); printf("Test_TC_CC_7_4\n"); printf("TestColorControl_9_1\n"); @@ -102,6 +103,7 @@ class TestList : public Command { printf("Test_TC_FAN_2_2\n"); printf("Test_TC_FAN_2_3\n"); printf("Test_TC_FAN_2_4\n"); + printf("Test_TC_FAN_2_5\n"); printf("Test_TC_FAN_3_1\n"); printf("Test_TC_FAN_3_2\n"); printf("Test_TC_FAN_3_4\n"); @@ -207,7 +209,6 @@ class TestList : public Command { printf("Test_TC_WNCV_2_1\n"); printf("Test_TC_WNCV_2_2\n"); printf("Test_TC_WNCV_2_3\n"); - printf("Test_TC_WNCV_2_4\n"); printf("Test_TC_WNCV_2_5\n"); printf("Test_TC_WNCV_3_1\n"); printf("Test_TC_WNCV_3_2\n"); @@ -269,7 +270,7 @@ class TestList : public Command { printf("Test_TC_DRLK_2_5\n"); printf("Test_TC_DRLK_2_6\n"); printf("Test_TC_DRLK_2_7\n"); - printf("Test_TC_DRLK_2_9\n"); + printf("Test_TC_DRLK_2_8\n"); printf("Test_TC_DRLK_2_11\n"); printf("Test_TC_DRLK_2_12\n"); printf("TestGroupsCluster\n"); @@ -22112,6 +22113,578 @@ class Test_TC_CC_6_1 : public TestCommandBridge { } }; +class Test_TC_CC_6_5 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_CC_6_5() + : TestCommandBridge("Test_TC_CC_6_5") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_CC_6_5() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_6_5\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_6_5\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : TH writes 0 to the Options attribute\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A000f")) { + NextTest(); + return; + } + err = TestThWrites0ToTheOptionsAttribute_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : TH sends On command to DUT\n"); + if (ShouldSkip("OO.S.C01.Rsp && CC.S.F04")) { + NextTest(); + return; + } + err = TestThSendsOnCommandToDut_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads ColorTemperatureMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestThReadsColorTemperatureMiredsAttributeFromDut_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads ColorTempPhysicalMinMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400b")) { + NextTest(); + return; + } + err = TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads ColorTempPhysicalMaxMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400c")) { + NextTest(); + return; + } + err = TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_5(); + break; + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads from the DUT the StartUpColorTemperatureMireds attribute\n"); + if (ShouldSkip("CC.S.A4010 && CC.S.F04")) { + NextTest(); + return; + } + err = TestThReadsFromTheDutTheStartUpColorTemperatureMiredsAttribute_6(); + break; + case 7: + ChipLogProgress(chipTool, + " ***** Test Step 7 : TH writes to StartUpColorTemperatureMireds attribute with value " + "StartUpColorTemperatureMireds\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP && CC.S.A4010 && CC.S.F04")) { + NextTest(); + return; + } + err = TestThWritesToStartUpColorTemperatureMiredsAttributeWithValueStartUpColorTemperatureMireds_7(); + break; + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads StartUpColorTemperatureMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A4010 && CC.S.F04")) { + NextTest(); + return; + } + err = TestThReadsStartUpColorTemperatureMiredsAttributeFromDut_8(); + break; + case 9: + ChipLogProgress(chipTool, + " ***** Test Step 9 : Verify that the DUT response contains StartUpColorTemperatureMireds that matches the " + "StartUpColorTemperatureMireds set in Step 2a\n"); + if (ShouldSkip("CC.S.A4010 && CC.S.F04 && PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestVerifyThatTheDutResponseContainsStartUpColorTemperatureMiredsThatMatchesTheStartUpColorTemperatureMiredsSetInStep2a_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Reboot target device\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestRebootTargetDevice_10(); + break; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Reboot target device(DUT)\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestRebootTargetDeviceDUT_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads from the DUT the StartUpColorTemperatureMireds attribute\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A4010")) { + NextTest(); + return; + } + err = TestThReadsFromTheDutTheStartUpColorTemperatureMiredsAttribute_13(); + break; + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads ColorTemperatureMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestThReadsColorTemperatureMiredsAttributeFromDut_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads ColorMode attribute from DUT\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0008")) { + NextTest(); + return; + } + err = TestThReadsColorModeAttributeFromDut_15(); + break; + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads EnhancedColorMode attribute from DUT\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A4001")) { + NextTest(); + return; + } + err = TestThReadsEnhancedColorModeAttributeFromDut_16(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 17; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id optionsArgument; + optionsArgument = [NSNumber numberWithUnsignedChar:0U]; + [cluster writeAttributeOptionsWithValue:optionsArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH writes 0 to the Options attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThSendsOnCommandToDut_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster onWithCompletion:^(NSError * _Nullable err) { + NSLog(@"TH sends On command to DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTemperatureMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperatureMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperatureMireds", [value unsignedShortValue], 65279U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTempPhysicalMinMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMinMireds attribute from DUT. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMinMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 65279U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTempPhysicalMaxMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMaxMireds attribute from DUT. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMaxMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 65279U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsFromTheDutTheStartUpColorTemperatureMiredsAttribute_6() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeStartUpColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads from the DUT the StartUpColorTemperatureMireds attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("startUpColorTemperatureMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("startUpColorTemperatureMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn( + CheckConstraintMaxValue("startUpColorTemperatureMireds", [value unsignedShortValue], 65279U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWritesToStartUpColorTemperatureMiredsAttributeWithValueStartUpColorTemperatureMireds_7() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + NSNumber * _Nullable StartUpColorTemperatureMiredsValue; + + CHIP_ERROR TestThReadsStartUpColorTemperatureMiredsAttributeFromDut_8() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeStartUpColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads StartUpColorTemperatureMireds attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("startUpColorTemperatureMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("startUpColorTemperatureMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn( + CheckConstraintMaxValue("startUpColorTemperatureMireds", [value unsignedShortValue], 65279U)); + } + { + StartUpColorTemperatureMiredsValue = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR + TestVerifyThatTheDutResponseContainsStartUpColorTemperatureMiredsThatMatchesTheStartUpColorTemperatureMiredsSetInStep2a_9() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestRebootTargetDevice_10() + { + + chip::app::Clusters::SystemCommands::Commands::Reboot::Type value; + return Reboot("alpha", value); + } + + CHIP_ERROR TestRebootTargetDeviceDUT_11() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message + = chip::Span("Please reboot the DUT and enter 'y' after DUT startsgarbage: not in length on purpose", 52); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_12() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestThReadsFromTheDutTheStartUpColorTemperatureMiredsAttribute_13() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeStartUpColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads from the DUT the StartUpColorTemperatureMireds attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + if (StartUpColorTemperatureMiredsValue == nil) { + VerifyOrReturn(CheckValueNull("StartUpColorTemperatureMireds", actualValue)); + } else { + VerifyOrReturn(CheckValueNonNull("StartUpColorTemperatureMireds", actualValue)); + VerifyOrReturn(CheckValue("StartUpColorTemperatureMireds", actualValue, StartUpColorTemperatureMiredsValue)); + } + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_14() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperatureMireds", actualValue, StartUpColorTemperatureMiredsValue)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorModeAttributeFromDut_15() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorMode attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorMode", actualValue, 2U)); + } + + VerifyOrReturn(CheckConstraintMinValue("colorMode", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorMode", [value unsignedCharValue], 2U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsEnhancedColorModeAttributeFromDut_16() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeEnhancedColorModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads EnhancedColorMode attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("EnhancedColorMode", actualValue, 2U)); + } + + VerifyOrReturn(CheckConstraintMinValue("enhancedColorMode", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("enhancedColorMode", [value unsignedCharValue], 3U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_CC_7_3 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -48764,6 +49337,121 @@ class Test_TC_FAN_2_4 : public TestCommandBridge { } }; +class Test_TC_FAN_2_5 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_FAN_2_5() + : TestCommandBridge("Test_TC_FAN_2_5") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_FAN_2_5() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_FAN_2_5\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_FAN_2_5\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads from the DUT the the AirflowDirection attribute\n"); + if (ShouldSkip("FAN.S.F05")) { + NextTest(); + return; + } + err = TestThReadsFromTheDutTheTheAirflowDirectionAttribute_1(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 2; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestThReadsFromTheDutTheTheAirflowDirectionAttribute_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterFanControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAirflowDirectionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads from the DUT the the AirflowDirection attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("airflowDirection", "enum8", "enum8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_FAN_3_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -67788,6 +68476,7 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("Index", 0, UINT8_MAX, &mIndex); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) @@ -67832,20 +68521,23 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { err = TestThReadsTheInputListAttributeFromTheDutToShowListOfInputsAvailableAndVerifyListOfAvailableInputsSupportedByTheDeviceIsProvidedWhereEachEntryInTheListContainsAnIndextypeuint8InputTypeInputTypeEnumsNameTypeStringsAndDescriptionTypeString_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Select Input Command\n"); + ChipLogProgress(chipTool, + " ***** Test Step 2 : TH sends SelectInput command to DUT to select an input by passing the index of the preferred " + "input.\n"); if (ShouldSkip("MEDIAINPUT.S.C00.Rsp")) { NextTest(); return; } - err = TestSelectInputCommand_2(); + err = TestThSendsSelectInputCommandToDutToSelectAnInputByPassingTheIndexOfThePreferredInput_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read current input list\n"); + ChipLogProgress(chipTool, + " ***** Test Step 3 : TH reads _CurrentInput attribute from the DUT to show the current input selected.\n"); if (ShouldSkip("MEDIAINPUT.S.A0001 && MEDIAINPUT.S.C00.Rsp")) { NextTest(); return; } - err = TestReadCurrentInputList_3(); + err = TestThReadsCurrentInputAttributeFromTheDutToShowTheCurrentInputSelected_3(); break; } @@ -67888,6 +68580,7 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; + chip::Optional mIndex; chip::Optional mTimeout; CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() @@ -67920,7 +68613,7 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestSelectInputCommand_2() + CHIP_ERROR TestThSendsSelectInputCommandToDutToSelectAnInputByPassingTheIndexOfThePreferredInput_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -67928,10 +68621,12 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); __auto_type * params = [[MTRMediaInputClusterSelectInputParams alloc] init]; - params.index = [NSNumber numberWithUnsignedChar:1U]; + params.index = mIndex.HasValue() ? [NSNumber numberWithUnsignedChar:mIndex.Value()] : [NSNumber numberWithUnsignedChar:1U]; [cluster selectInputWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"Select Input Command Error: %@", err); + NSLog(@"TH sends SelectInput command to DUT to select an input by passing the index of the " + @"preferred input. Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -67941,7 +68636,7 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadCurrentInputList_3() + CHIP_ERROR TestThReadsCurrentInputAttributeFromTheDutToShowTheCurrentInputSelected_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -67949,13 +68644,13 @@ class Test_TC_MEDIAINPUT_3_11 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentInputWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current input list Error: %@", err); + NSLog(@"TH reads _CurrentInput attribute from the DUT to show the current input selected. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); { id actualValue = value; - VerifyOrReturn(CheckValue("CurrentInput", actualValue, 1U)); + VerifyOrReturn(CheckValue("CurrentInput", actualValue, mIndex.HasValue() ? mIndex.Value() : 1U)); } NextTest(); @@ -68154,6 +68849,7 @@ class Test_TC_MEDIAINPUT_3_13 : public TestCommandBridge { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("Index", 0, UINT8_MAX, &mIndex); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) @@ -68196,12 +68892,13 @@ class Test_TC_MEDIAINPUT_3_13 : public TestCommandBridge { err = TestThReadsTheInputListAttributeFromTheDutToShowListOfInputsAvailable_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Rename Input Command\n"); + ChipLogProgress(chipTool, + " ***** Test Step 2 : TH sends a RenameInput command to DUT to rename an input from the list returned in step 1\n"); if (ShouldSkip("MEDIAINPUT.S.C03.Rsp")) { NextTest(); return; } - err = TestRenameInputCommand_2(); + err = TestThSendsARenameInputCommandToDutToRenameAnInputFromTheListReturnedInStep1_2(); break; case 3: ChipLogProgress( @@ -68253,6 +68950,7 @@ class Test_TC_MEDIAINPUT_3_13 : public TestCommandBridge { chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; + chip::Optional mIndex; chip::Optional mTimeout; CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() @@ -68275,13 +68973,14 @@ class Test_TC_MEDIAINPUT_3_13 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckConstraintType("inputList", "list", "list")); NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestRenameInputCommand_2() + CHIP_ERROR TestThSendsARenameInputCommandToDutToRenameAnInputFromTheListReturnedInStep1_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68289,11 +68988,13 @@ class Test_TC_MEDIAINPUT_3_13 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); __auto_type * params = [[MTRMediaInputClusterRenameInputParams alloc] init]; - params.index = [NSNumber numberWithUnsignedChar:1U]; + params.index = mIndex.HasValue() ? [NSNumber numberWithUnsignedChar:mIndex.Value()] : [NSNumber numberWithUnsignedChar:1U]; params.name = @"A1"; [cluster renameInputWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"Rename Input Command Error: %@", err); + NSLog(@"TH sends a RenameInput command to DUT to rename an input from the list returned in step 1 " + @"Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68482,20 +69183,22 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Reads the ChannelList attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads the ChannelList attribute from the DUT\n"); if (ShouldSkip("CHANNEL.S.A0000")) { NextTest(); return; } - err = TestReadsTheChannelListAttribute_1(); + err = TestThReadsTheChannelListAttributeFromTheDut_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : TH sends a ChangeChannelByNumber command\n"); + ChipLogProgress(chipTool, + " ***** Test Step 2 : TH sends a ChangeChannelByNumber command to the DUT with channel information (major and " + "minor numbers) from the list in step 1\n"); if (ShouldSkip("CHANNEL.S.C02.Rsp")) { NextTest(); return; } - err = TestThSendsAChangeChannelByNumberCommand_2(); + err = TestThSendsAChangeChannelByNumberCommandToTheDutWithChannelInformationMajorAndMinorNumbersFromTheListInStep1_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Verify that the channel has changed on the device\n"); @@ -68506,12 +69209,12 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { err = TestVerifyThatTheChannelHasChangedOnTheDevice_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Reads the CurrentChannel attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads the CurrentChannel attribute from the DUT\n"); if (ShouldSkip("CHANNEL.S.A0002 && CHANNEL.S.C02.Rsp")) { NextTest(); return; } - err = TestReadsTheCurrentChannelAttribute_4(); + err = TestThReadsTheCurrentChannelAttributeFromTheDut_4(); break; } @@ -68569,7 +69272,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { return WaitForCommissionee("alpha", value); } - CHIP_ERROR TestReadsTheChannelListAttribute_1() + CHIP_ERROR TestThReadsTheChannelListAttributeFromTheDut_1() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68577,7 +69280,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeChannelListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the ChannelList attribute Error: %@", err); + NSLog(@"TH reads the ChannelList attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68588,7 +69291,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAChangeChannelByNumberCommand_2() + CHIP_ERROR TestThSendsAChangeChannelByNumberCommandToTheDutWithChannelInformationMajorAndMinorNumbersFromTheListInStep1_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68602,7 +69305,9 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { : [NSNumber numberWithUnsignedShort:1U]; [cluster changeChannelByNumberWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"TH sends a ChangeChannelByNumber command Error: %@", err); + NSLog(@"TH sends a ChangeChannelByNumber command to the DUT with channel information " + @"(major and minor numbers) from the list in step 1 Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68623,7 +69328,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsTheCurrentChannelAttribute_4() + CHIP_ERROR TestThReadsTheCurrentChannelAttributeFromTheDut_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68632,7 +69337,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { [cluster readAttributeCurrentChannelWithCompletion:^( MTRChannelClusterChannelInfoStruct * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the CurrentChannel attribute Error: %@", err); + NSLog(@"TH reads the CurrentChannel attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68709,28 +69414,28 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { err = TestThReadsTheLineupAttributeFromTheDutToShowListOfInputsAvailableAndVerifyThatTheResponseContainsALineupInfoObject_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Reads the ChannelList attribute from the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads the ChannelList attribute from the DUT\n"); if (ShouldSkip("CHANNEL.S.A0000")) { NextTest(); return; } - err = TestReadsTheChannelListAttributeFromTheDut_2(); + err = TestThReadsTheChannelListAttributeFromTheDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads the CurrentChannel attribute from the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads the CurrentChannel attribute from the DUT\n"); if (ShouldSkip("CHANNEL.S.A0002")) { NextTest(); return; } - err = TestReadsTheCurrentChannelAttributeFromTheDut_3(); + err = TestThReadsTheCurrentChannelAttributeFromTheDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Sends a SkipChannel command to the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends a SkipChannel command to the DUT with a value of 1\n"); if (ShouldSkip("CHANNEL.S.C03.Rsp")) { NextTest(); return; } - err = TestSendsASkipChannelCommandToTheDut_4(); + err = TestThSendsASkipChannelCommandToTheDutWithAValueOf1_4(); break; case 5: ChipLogProgress(chipTool, " ***** Test Step 5 : Verify that the channel has changed on the device\n"); @@ -68741,12 +69446,12 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { err = TestVerifyThatTheChannelHasChangedOnTheDevice_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Reads the CurrentChannel attribute from the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads the CurrentChannel attribute from the DUT\n"); if (ShouldSkip("CHANNEL.S.A0002 && CHANNEL.S.C03.Rsp")) { NextTest(); return; } - err = TestReadsTheCurrentChannelAttributeFromTheDut_6(); + err = TestThReadsTheCurrentChannelAttributeFromTheDut_6(); break; } @@ -68833,7 +69538,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheChannelListAttributeFromTheDut_2() + CHIP_ERROR TestThReadsTheChannelListAttributeFromTheDut_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68841,7 +69546,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeChannelListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the ChannelList attribute from the DUT Error: %@", err); + NSLog(@"TH reads the ChannelList attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68852,7 +69557,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheCurrentChannelAttributeFromTheDut_3() + CHIP_ERROR TestThReadsTheCurrentChannelAttributeFromTheDut_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68861,7 +69566,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { [cluster readAttributeCurrentChannelWithCompletion:^( MTRChannelClusterChannelInfoStruct * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the CurrentChannel attribute from the DUT Error: %@", err); + NSLog(@"TH reads the CurrentChannel attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68880,7 +69585,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestSendsASkipChannelCommandToTheDut_4() + CHIP_ERROR TestThSendsASkipChannelCommandToTheDutWithAValueOf1_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68891,7 +69596,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { params.count = [NSNumber numberWithShort:1]; [cluster skipChannelWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"Sends a SkipChannel command to the DUT Error: %@", err); + NSLog(@"TH sends a SkipChannel command to the DUT with a value of 1 Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -68912,7 +69617,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsTheCurrentChannelAttributeFromTheDut_6() + CHIP_ERROR TestThReadsTheCurrentChannelAttributeFromTheDut_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -68921,7 +69626,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { [cluster readAttributeCurrentChannelWithCompletion:^( MTRChannelClusterChannelInfoStruct * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the CurrentChannel attribute from the DUT Error: %@", err); + NSLog(@"TH reads the CurrentChannel attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -71295,30 +72000,32 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Reads the OutputList attribute from the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads the OutputList attribute from the DUT\n"); if (ShouldSkip("AUDIOOUTPUT.S.A0000")) { NextTest(); return; } - err = TestReadsTheOutputListAttributeFromTheDut_1(); + err = TestThReadsTheOutputListAttributeFromTheDut_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Sends a RenameOutput command\n"); + ChipLogProgress(chipTool, + " ***** Test Step 2 : TH sends a RenameOutput command to the DUT with an index from the list in step 1 and the " + "name 'CertTest'\n"); if (ShouldSkip("AUDIOOUTPUT.S.C01.Rsp")) { NextTest(); return; } - err = TestSendsARenameOutputCommand_2(); + err = TestThSendsARenameOutputCommandToTheDutWithAnIndexFromTheListInStep1AndTheNameCertTest_2(); break; case 3: ChipLogProgress(chipTool, - " ***** Test Step 3 : Reads the OutputList attribute from the DUT Verify that the output at the index provided in " - "step 2 has the name CertTest\n"); + " ***** Test Step 3 : TH reads the OutputList attribute from the DUT. Verify that the output at the index provided " + "in step 2 has the name CertTest\n"); if (ShouldSkip("PICS_USER_PROMPT && AUDIOOUTPUT.S.A0001 && AUDIOOUTPUT.S.C01.Rsp")) { NextTest(); return; } - err = TestReadsTheOutputListAttributeFromTheDutVerifyThatTheOutputAtTheIndexProvidedInStep2HasTheNameCertTest_3(); + err = TestThReadsTheOutputListAttributeFromTheDutVerifyThatTheOutputAtTheIndexProvidedInStep2HasTheNameCertTest_3(); break; } @@ -71373,7 +72080,7 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { } NSArray * _Nonnull audioOutputListValues; - CHIP_ERROR TestReadsTheOutputListAttributeFromTheDut_1() + CHIP_ERROR TestThReadsTheOutputListAttributeFromTheDut_1() { MTRBaseDevice * device = GetDevice("alpha"); @@ -71381,7 +72088,7 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeOutputListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the OutputList attribute from the DUT Error: %@", err); + NSLog(@"TH reads the OutputList attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -71396,7 +72103,7 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestSendsARenameOutputCommand_2() + CHIP_ERROR TestThSendsARenameOutputCommandToTheDutWithAnIndexFromTheListInStep1AndTheNameCertTest_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -71408,7 +72115,9 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { params.name = @"CertTest"; [cluster renameOutputWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"Sends a RenameOutput command Error: %@", err); + NSLog(@"TH sends a RenameOutput command to the DUT with an index from the list in step 1 and the " + @"name 'CertTest' Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -71418,7 +72127,7 @@ class Test_TC_AUDIOOUTPUT_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOutputListAttributeFromTheDutVerifyThatTheOutputAtTheIndexProvidedInStep2HasTheNameCertTest_3() + CHIP_ERROR TestThReadsTheOutputListAttributeFromTheDutVerifyThatTheOutputAtTheIndexProvidedInStep2HasTheNameCertTest_3() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -78740,28 +79449,28 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Read the mandatory attribute constraints: MeasuredValue\n"); - if (ShouldSkip("PRS.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 1 : Read the mandatory attribute constraints: MinMeasuredValue\n"); + if (ShouldSkip("PRS.S.A0001")) { NextTest(); return; } - err = TestReadTheMandatoryAttributeConstraintsMeasuredValue_1(); + err = TestReadTheMandatoryAttributeConstraintsMinMeasuredValue_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the mandatory attribute constraints: MinMeasuredValue\n"); - if (ShouldSkip("PRS.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the mandatory attribute constraints: MaxMeasuredValue\n"); + if (ShouldSkip("PRS.S.A0002")) { NextTest(); return; } - err = TestReadTheMandatoryAttributeConstraintsMinMeasuredValue_2(); + err = TestReadTheMandatoryAttributeConstraintsMaxMeasuredValue_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the mandatory attribute constraints: MaxMeasuredValue\n"); - if (ShouldSkip("PRS.S.A0002")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the mandatory attribute constraints: MeasuredValue\n"); + if (ShouldSkip("PRS.S.A0000")) { NextTest(); return; } - err = TestReadTheMandatoryAttributeConstraintsMaxMeasuredValue_3(); + err = TestReadTheMandatoryAttributeConstraintsMeasuredValue_3(); break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute: Tolerance\n"); @@ -78772,28 +79481,28 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { err = TestReadTheOptionalAttributeTolerance_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute: ScaledValue\n"); - if (ShouldSkip("PRS.S.A0010")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute: MinScaledValue\n"); + if (ShouldSkip("PRS.S.A0011")) { NextTest(); return; } - err = TestReadTheOptionalAttributeScaledValue_5(); + err = TestReadTheOptionalAttributeMinScaledValue_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute: MinScaledValue\n"); - if (ShouldSkip("PRS.S.A0011")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute: MaxScaledValue\n"); + if (ShouldSkip("PRS.S.A0012")) { NextTest(); return; } - err = TestReadTheOptionalAttributeMinScaledValue_6(); + err = TestReadTheOptionalAttributeMaxScaledValue_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute: MaxScaledValue\n"); - if (ShouldSkip("PRS.S.A0012")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute: ScaledValue\n"); + if (ShouldSkip("PRS.S.A0010")) { NextTest(); return; } - err = TestReadTheOptionalAttributeMaxScaledValue_7(); + err = TestReadTheOptionalAttributeScaledValue_7(); break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute: ScaledTolerance\n"); @@ -78879,8 +79588,9 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; return WaitForCommissionee("alpha", value); } + NSNumber * _Nullable MinMeasuredValue; - CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMeasuredValue_1() + CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMinMeasuredValue_1() { MTRBaseDevice * device = GetDevice("alpha"); @@ -78889,16 +79599,19 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute constraints: MeasuredValue Error: %@", err); + [cluster readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the mandatory attribute constraints: MinMeasuredValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("measuredValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("measuredValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("measuredValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("minMeasuredValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("minMeasuredValue", [value shortValue], -32768)); + VerifyOrReturn(CheckConstraintMaxValue("minMeasuredValue", [value shortValue], 32767)); + } + { + MinMeasuredValue = value; } NextTest(); @@ -78906,8 +79619,9 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nullable MaxMeasuredValue; - CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMinMeasuredValue_2() + CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMaxMeasuredValue_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -78916,16 +79630,19 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute constraints: MinMeasuredValue Error: %@", err); + [cluster readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the mandatory attribute constraints: MaxMeasuredValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("minMeasuredValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minMeasuredValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("minMeasuredValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("maxMeasuredValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("maxMeasuredValue", [value shortValue], -32768)); + VerifyOrReturn(CheckConstraintMaxValue("maxMeasuredValue", [value shortValue], 32767)); + } + { + MaxMeasuredValue = value; } NextTest(); @@ -78934,7 +79651,7 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMaxMeasuredValue_3() + CHIP_ERROR TestReadTheMandatoryAttributeConstraintsMeasuredValue_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -78943,16 +79660,16 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute constraints: MaxMeasuredValue Error: %@", err); + [cluster readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the mandatory attribute constraints: MeasuredValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("maxMeasuredValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxMeasuredValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("maxMeasuredValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("measuredValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("measuredValue", [value shortValue], MinMeasuredValue)); + VerifyOrReturn(CheckConstraintMaxValue("measuredValue", [value shortValue], MaxMeasuredValue)); } NextTest(); @@ -78984,8 +79701,9 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nullable MinScaledValue; - CHIP_ERROR TestReadTheOptionalAttributeScaledValue_5() + CHIP_ERROR TestReadTheOptionalAttributeMinScaledValue_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -78994,16 +79712,19 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ScaledValue Error: %@", err); + [cluster readAttributeMinScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional attribute: MinScaledValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("scaledValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("scaledValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("scaledValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("minScaledValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("minScaledValue", [value shortValue], -32768)); + VerifyOrReturn(CheckConstraintMaxValue("minScaledValue", [value shortValue], 32767)); + } + { + MinScaledValue = value; } NextTest(); @@ -79011,8 +79732,9 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nullable MaxScaledValue; - CHIP_ERROR TestReadTheOptionalAttributeMinScaledValue_6() + CHIP_ERROR TestReadTheOptionalAttributeMaxScaledValue_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -79021,16 +79743,19 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMinScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: MinScaledValue Error: %@", err); + [cluster readAttributeMaxScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional attribute: MaxScaledValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("minScaledValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minScaledValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("minScaledValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("maxScaledValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("maxScaledValue", [value shortValue], -32768)); + VerifyOrReturn(CheckConstraintMaxValue("maxScaledValue", [value shortValue], 32767)); + } + { + MaxScaledValue = value; } NextTest(); @@ -79039,7 +79764,7 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeMaxScaledValue_7() + CHIP_ERROR TestReadTheOptionalAttributeScaledValue_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -79048,16 +79773,16 @@ class Test_TC_PRS_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMaxScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: MaxScaledValue Error: %@", err); + [cluster readAttributeScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional attribute: ScaledValue Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); if (value != nil) { - VerifyOrReturn(CheckConstraintType("maxScaledValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxScaledValue", [value shortValue], -32768)); - VerifyOrReturn(CheckConstraintMaxValue("maxScaledValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintType("scaledValue", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("scaledValue", [value shortValue], MinScaledValue)); + VerifyOrReturn(CheckConstraintMaxValue("scaledValue", [value shortValue], MaxScaledValue)); } NextTest(); @@ -86607,6 +87332,7 @@ class Test_TC_TMP_2_1 : public TestCommandBridge { value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; return WaitForCommissionee("alpha", value); } + NSNumber * _Nullable MinMeasuredValue; CHIP_ERROR TestReadTheMandatoryAttributeMinMeasuredValue_1() { @@ -86628,12 +87354,16 @@ class Test_TC_TMP_2_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintMinValue("minMeasuredValue", [value shortValue], -27315)); VerifyOrReturn(CheckConstraintMaxValue("minMeasuredValue", [value shortValue], 32767)); } + { + MinMeasuredValue = value; + } NextTest(); }]; return CHIP_NO_ERROR; } + NSNumber * _Nullable MaxMeasuredValue; CHIP_ERROR TestReadTheMandatoryAttributeMaxMeasuredValue_2() { @@ -86655,6 +87385,9 @@ class Test_TC_TMP_2_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintMinValue("maxMeasuredValue", [value shortValue], -27314)); VerifyOrReturn(CheckConstraintMaxValue("maxMeasuredValue", [value shortValue], 32767)); } + { + MaxMeasuredValue = value; + } NextTest(); }]; @@ -86679,8 +87412,8 @@ class Test_TC_TMP_2_1 : public TestCommandBridge { if (value != nil) { VerifyOrReturn(CheckConstraintType("measuredValue", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("measuredValue", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("measuredValue", [value shortValue], 32767)); + VerifyOrReturn(CheckConstraintMinValue("measuredValue", [value shortValue], MinMeasuredValue)); + VerifyOrReturn(CheckConstraintMaxValue("measuredValue", [value shortValue], MaxMeasuredValue)); } NextTest(); @@ -94372,13 +95105,52 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, - " ***** Test Step 1 : Reads ConfigStatus attribute from DUT, if (PA & LF) value of bit 3 must be 1b else 0b & if " - "(PA & TL) value of bit 4 must be 1b else 0b\n"); - if (ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02")) { + " ***** Test Step 1 : Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit " + "3 must be 1b else 0b\n"); + if (ShouldSkip("WNCV.S.A0007 && WNCV.S.F00 && WNCV.S.F02")) { + NextTest(); + return; + } + err = TestReadsConfigStatusAttributeFromDutIfWncvsf00lfWncvsf02paLfValueOfBit3MustBe1bElse0b_1(); + break; + case 2: + ChipLogProgress(chipTool, + " ***** Test Step 2 : Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit " + "3 must be 1b else 0b\n"); + if (ShouldSkip("WNCV.S.A0007 && !WNCV.S.F00 && !WNCV.S.F02")) { + NextTest(); + return; + } + err = TestReadsConfigStatusAttributeFromDutIfWncvsf00lfWncvsf02paLfValueOfBit3MustBe1bElse0b_2(); + break; + case 3: + ChipLogProgress(chipTool, + " ***** Test Step 3 : Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit " + "4 must be 1b else 0b,\n"); + if (ShouldSkip("WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04")) { + NextTest(); + return; + } + err = TestReadsConfigStatusAttributeFromDutIfWncvsf01tlWncvsf04paTlValueOfBit4MustBe1bElse0b_3(); + break; + case 4: + ChipLogProgress(chipTool, + " ***** Test Step 4 : Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit " + "4 must be 1b else 0b,\n"); + if (ShouldSkip("WNCV.S.A0007 && !WNCV.S.F01 && !WNCV.S.F04")) { + NextTest(); + return; + } + err = TestReadsConfigStatusAttributeFromDutIfWncvsf01tlWncvsf04paTlValueOfBit4MustBe1bElse0b_4(); + break; + case 5: + ChipLogProgress( + chipTool, " ***** Test Step 5 : Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b (operational)\n"); + if (ShouldSkip("WNCV.S.A0007")) { NextTest(); return; } - err = TestReadsConfigStatusAttributeFromDutIfPaLfValueOfBit3MustBe1bElse0bIfPaTlValueOfBit4MustBe1bElse0b_1(); + err = TestReadsConfigStatusAttributeFromDutValueOfBit0MustBe1bOperational_5(); break; } @@ -94397,6 +95169,18 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { case 1: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -94410,7 +95194,7 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 2; + const uint16_t mTestCount = 6; chip::Optional mNodeId; chip::Optional mCluster; @@ -94425,14 +95209,107 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { return WaitForCommissionee("alpha", value); } - CHIP_ERROR TestReadsConfigStatusAttributeFromDutIfPaLfValueOfBit3MustBe1bElse0bIfPaTlValueOfBit4MustBe1bElse0b_1() + CHIP_ERROR TestReadsConfigStatusAttributeFromDutIfWncvsf00lfWncvsf02paLfValueOfBit3MustBe1bElse0b_1() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterWindowCovering alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else " + @"0b Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("configStatus", "bitmap8", "bitmap8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsConfigStatusAttributeFromDutIfWncvsf00lfWncvsf02paLfValueOfBit3MustBe1bElse0b_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterWindowCovering alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads ConfigStatus attribute from DUT, if (WNCV.S.F00(LF) & WNCV.S.F02(PA_LF)) value of bit 3 must be 1b else " + @"0b Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("configStatus", "bitmap8", "bitmap8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsConfigStatusAttributeFromDutIfWncvsf01tlWncvsf04paTlValueOfBit4MustBe1bElse0b_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterWindowCovering alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else " + @"0b, Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("configStatus", "bitmap8", "bitmap8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsConfigStatusAttributeFromDutIfWncvsf01tlWncvsf04paTlValueOfBit4MustBe1bElse0b_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterWindowCovering alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads ConfigStatus attribute from DUT, if (WNCV.S.F01(TL) & WNCV.S.F04(PA_TL)) value of bit 4 must be 1b else " + @"0b, Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("configStatus", "bitmap8", "bitmap8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsConfigStatusAttributeFromDutValueOfBit0MustBe1bOperational_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterWindowCovering alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b (operational) Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("configStatus", "bitmap8", "bitmap8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } }; @@ -95064,112 +95941,6 @@ class Test_TC_WNCV_2_3 : public TestCommandBridge { } }; -class Test_TC_WNCV_2_4 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_WNCV_2_4() - : TestCommandBridge("Test_TC_WNCV_2_4") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_WNCV_2_4() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_WNCV_2_4\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_WNCV_2_4\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Reads Type attribute from DUT\n"); - if (ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0000")) { - NextTest(); - return; - } - err = TestReadsTypeAttributeFromDut_1(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 2; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestReadsTypeAttributeFromDut_1() - { - - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } -}; - class Test_TC_WNCV_2_5 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -137810,7 +138581,7 @@ class Test_TC_DGSW_1_1 : public TestCommandBridge { break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads EventList from DUT\n"); - if (ShouldSkip("DGSW.S.F00 && DGSW.S.Afffa")) { + if (ShouldSkip("DGSW.S.E00 && DGSW.S.Afffa")) { NextTest(); return; } @@ -137818,7 +138589,7 @@ class Test_TC_DGSW_1_1 : public TestCommandBridge { break; case 11: ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads EventList from DUT\n"); - if (ShouldSkip(" !DGSW.S.F00 && DGSW.S.Afffa ")) { + if (ShouldSkip(" !DGSW.S.E00 && DGSW.S.Afffa ")) { NextTest(); return; } @@ -156165,56 +156936,88 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { err = TestVerifyCreatedPinCredential_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : TH writes AutoRelockTime attribute value as 60 seconds on the DUT\n"); - if (ShouldSkip("DRLK.S.A0023")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH writes AutoRelockTime attribute value as 10 seconds on the DUT\n"); + if (ShouldSkip("DRLK.S.A0023.Write && PICS_SDK_CI_ONLY")) { NextTest(); return; } - err = TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_5(); + err = TestThWritesAutoRelockTimeAttributeValueAs10SecondsOnTheDut_5(); break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : TH writes AutoRelockTime attribute value as 60 seconds on the DUT\n"); - if (ShouldSkip(" !DRLK.S.A0023 ")) { + if (ShouldSkip("DRLK.S.A0023.Write && PICS_SKIP_SAMPLE_APP")) { NextTest(); return; } err = TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends the Unlock with Timeout argument value as 60 seconds\n"); - if (ShouldSkip("DRLK.S.C03.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : TH writes AutoRelockTime attribute value as 10 seconds on the DUT\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY && !DRLK.S.A0023.Write")) { NextTest(); return; } - err = TestThSendsTheUnlockWithTimeoutArgumentValueAs60Seconds_7(); + err = TestThWritesAutoRelockTimeAttributeValueAs10SecondsOnTheDut_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 60s\n"); - if (ShouldSkip("DRLK.S.C03.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH writes AutoRelockTime attribute value as 60 seconds on the DUT\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP && !DRLK.S.A0023.Write")) { NextTest(); return; } - err = TestWait60s_8(); + err = TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads LockState attribute\n"); - if (ShouldSkip("DRLK.S.A0000 && DRLK.S.C03.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : TH sends the Unlock with Timeout argument value as 10 seconds\n"); + if (ShouldSkip("DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY")) { NextTest(); return; } - err = TestThReadsLockStateAttribute_9(); + err = TestThSendsTheUnlockWithTimeoutArgumentValueAs10Seconds_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Cleanup the created user\n"); - err = TestCleanupTheCreatedUser_10(); + ChipLogProgress(chipTool, " ***** Test Step 10 : TH sends the Unlock with Timeout argument value as 60 seconds\n"); + if (ShouldSkip("DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestThSendsTheUnlockWithTimeoutArgumentValueAs60Seconds_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Clean the created credential\n"); + ChipLogProgress(chipTool, " ***** Test Step 11 : Wait for AutoRelockTime Expires\n"); + if (ShouldSkip("DRLK.S.C03.Rsp && PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestWaitForAutoRelockTimeExpires_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait for AutoRelockTime Expires\n"); + if (ShouldSkip("DRLK.S.C03.Rsp && PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestWaitForAutoRelockTimeExpires_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads LockState attribute\n"); + if (ShouldSkip("DRLK.S.A0000 && DRLK.S.C03.Rsp")) { + NextTest(); + return; + } + err = TestThReadsLockStateAttribute_13(); + break; + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Cleanup the created user\n"); + err = TestCleanupTheCreatedUser_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Clean the created credential\n"); if (ShouldSkip("DRLK.S.C26.Rsp")) { NextTest(); return; } - err = TestCleanTheCreatedCredential_11(); + err = TestCleanTheCreatedCredential_15(); break; } @@ -156246,13 +157049,13 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); break; case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -156263,6 +157066,18 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -156276,7 +157091,7 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 12; + const uint16_t mTestCount = 16; chip::Optional mNodeId; chip::Optional mCluster; @@ -156496,7 +157311,30 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_5() + CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs10SecondsOnTheDut_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id autoRelockTimeArgument; + autoRelockTimeArgument = [NSNumber numberWithUnsignedInt:10UL]; + [cluster + writeAttributeAutoRelockTimeWithValue:autoRelockTimeArgument + completion:^(NSError * _Nullable err) { + NSLog( + @"TH writes AutoRelockTime attribute value as 10 seconds on the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -156519,7 +157357,34 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_6() + CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs10SecondsOnTheDut_7() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id autoRelockTimeArgument; + autoRelockTimeArgument = [NSNumber numberWithUnsignedInt:10UL]; + [cluster + writeAttributeAutoRelockTimeWithValue:autoRelockTimeArgument + completion:^(NSError * _Nullable err) { + NSLog( + @"TH writes AutoRelockTime attribute value as 10 seconds on the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] + ? err.code + : EMBER_ZCL_STATUS_FAILURE) + : 0, + EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWritesAutoRelockTimeAttributeValueAs60SecondsOnTheDut_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -156546,7 +157411,29 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsTheUnlockWithTimeoutArgumentValueAs60Seconds_7() + CHIP_ERROR TestThSendsTheUnlockWithTimeoutArgumentValueAs10Seconds_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRDoorLockClusterUnlockWithTimeoutParams alloc] init]; + params.timeout = [NSNumber numberWithUnsignedShort:10U]; + params.pinCode = [[NSData alloc] initWithBytes:"123456" length:6]; + [cluster unlockWithTimeoutWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends the Unlock with Timeout argument value as 10 seconds Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThSendsTheUnlockWithTimeoutArgumentValueAs60Seconds_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -156568,15 +157455,23 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait60s_8() + CHIP_ERROR TestWaitForAutoRelockTimeExpires_11() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 60000UL; + value.ms = 11000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsLockStateAttribute_9() + CHIP_ERROR TestWaitForAutoRelockTimeExpires_12() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 70000UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestThReadsLockStateAttribute_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -156600,7 +157495,7 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCleanupTheCreatedUser_10() + CHIP_ERROR TestCleanupTheCreatedUser_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -156621,7 +157516,7 @@ class Test_TC_DRLK_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCleanTheCreatedCredential_11() + CHIP_ERROR TestCleanTheCreatedCredential_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -158615,11 +159510,11 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { } }; -class Test_TC_DRLK_2_9 : public TestCommandBridge { +class Test_TC_DRLK_2_8 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_DRLK_2_9() - : TestCommandBridge("Test_TC_DRLK_2_9") + Test_TC_DRLK_2_8() + : TestCommandBridge("Test_TC_DRLK_2_8") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -158629,7 +159524,7 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_DRLK_2_9() {} + ~Test_TC_DRLK_2_8() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -158637,11 +159532,11 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_DRLK_2_9\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_DRLK_2_8\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DRLK_2_9\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DRLK_2_8\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -158658,155 +159553,103 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Create new user with default parameters\n"); - err = TestCreateNewUserWithDefaultParameters_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the user back and verify its fields\n"); - err = TestReadTheUserBackAndVerifyItsFields_2(); - break; - case 3: ChipLogProgress( - chipTool, " ***** Test Step 3 : TH reads NumberOfTotalUsersSupported attribute and saves for future use.\n"); + chipTool, " ***** Test Step 1 : TH reads NumberOfTotalUsers Supported attribute and saves for future use.\n"); if (ShouldSkip("DRLK.S.F08 && DRLK.S.A0011")) { NextTest(); return; } - err = TestThReadsNumberOfTotalUsersSupportedAttributeAndSavesForFutureUse_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends Set Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { - NextTest(); - return; - } - err = TestThSendsSetCredentialCommandToDut_4(); + err = TestThReadsNumberOfTotalUsersSupportedAttributeAndSavesForFutureUse_1(); break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends Get Credential Status Command\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx")) { - NextTest(); - return; - } - err = TestThSendsGetCredentialStatusCommand_5(); - break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH sends Set Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { + case 2: + ChipLogProgress(chipTool, + " ***** Test Step 2 : TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as " + "1 UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 0 CredentialRule as 0\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp")) { NextTest(); return; } - err = TestThSendsSetCredentialCommandToDut_6(); + err = TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs1UserNameAsXxxUserUniqueIDAs6452UserStatusAs1UserTypeAs0CredentialRuleAs0_2(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends Set Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : TH sends Get User Command to DUT with UserIndex as 1\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx")) { NextTest(); return; } - err = TestThSendsSetCredentialCommandToDut_7(); + err = TestThSendsGetUserCommandToDutWithUserIndexAs1_3(); break; - case 8: + case 4: ChipLogProgress(chipTool, - " ***** Test Step 8 : TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response " - "command with status as DUPLICATE or OCCUPIED\n"); - if (ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { + " ***** Test Step 4 : TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as " + "2 UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 10 (Invalid value) CredentialRule as 3\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp")) { NextTest(); return; } - err = TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithStatusAsDuplicateOrOccupied_8(); + err = TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs2UserNameAsXxxUserUniqueIDAs6452UserStatusAs1UserTypeAs10InvalidValueCredentialRuleAs3_4(); break; - case 9: + case 5: ChipLogProgress(chipTool, - " ***** Test Step 9 : TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential Response " - "command with response as OCCUPIED if the CredentialIndex is repeated\n"); - if (ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { + " ***** Test Step 5 : TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as " + "1 (Same as step 2) UserName as xxx UserUniqueID as 8965 UserStatus as 1 UserType as 0 CredentialRule as 0\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp")) { NextTest(); return; } - err = TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithResponseAsOccupiedIfTheCredentialIndexIsRepeated_9(); + err = TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs1SameAsStep2UserNameAsXxxUserUniqueIDAs8965UserStatusAs1UserTypeAs0CredentialRuleAs0_5(); break; - case 10: + case 6: ChipLogProgress(chipTool, - " ***** Test Step 10 : TH sends Set Credential Command to DUT and Verify that the DUT sends Set Credential " - "Response command with response as OCCUPIED if the CredentialIndex is repeated\n"); - if (ShouldSkip("PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { - NextTest(); - return; - } - err = TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithResponseAsOccupiedIfTheCredentialIndexIsRepeated_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends Clear Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp")) { - NextTest(); - return; - } - err = TestThSendsClearCredentialCommandToDut_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : TH sends Get Credential Status Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx")) { - NextTest(); - return; - } - err = TestThSendsGetCredentialStatusCommandToDut_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH sends Set User Command to DUT\n"); + " ***** Test Step 6 : TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as " + "2 UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL\n"); if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp")) { NextTest(); return; } - err = TestThSendsSetUserCommandToDut_13(); + err = TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs2UserNameAsNullUserUniqueIDAsNullUserStatusAsNullUserTypeAsNullCredentialRuleAsNull_6(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH sends Set Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx")) { + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends Get User Command to DUT with UserIndex as 2\n"); + if (ShouldSkip("DRLK.S.C1a.Rsp && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx")) { NextTest(); return; } - err = TestThSendsSetCredentialCommandToDut_14(); + err = TestThSendsGetUserCommandToDutWithUserIndexAs2_7(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : TH sends Clear Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp")) { + case 8: + ChipLogProgress(chipTool, + " ***** Test Step 8 : TH sends Set User Command to DUT with the following values: OperationType as 2 UserIndex as " + "2 UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as NULL\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1a.Rsp")) { NextTest(); return; } - err = TestThSendsClearCredentialCommandToDut_15(); + err = TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs2UserIndexAs2UserNameAsNullUserUniqueIDAsNullUserStatusAsNullUserTypeAsNullCredentialRuleAsNull_8(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TH sends Get Credential Status Command\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx")) { + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : TH sends Get User Command to DUT with the UserIndex as 2\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx")) { NextTest(); return; } - err = TestThSendsGetCredentialStatusCommand_16(); + err = TestThSendsGetUserCommandToDutWithTheUserIndexAs2_9(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : TH sends Get Credential Status Command\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C24.Rsp && DRLK.S.C25.Tx")) { + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : TH sends Clear User Command to DUT with the UserIndex as 1\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1d.Rsp")) { NextTest(); return; } - err = TestThSendsGetCredentialStatusCommand_17(); + err = TestThSendsClearUserCommandToDutWithTheUserIndexAs1_10(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : TH sends Clear Credential Command to DUT\n"); - if (ShouldSkip("DRLK.S.F08 && DRLK.S.C26.Rsp")) { + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends Get User Command to DUT with the UserIndex as 1\n"); + if (ShouldSkip("DRLK.S.F08 && DRLK.S.C1b.Rsp && DRLK.S.C1c.Tx")) { NextTest(); return; } - err = TestThSendsClearCredentialCommandToDut_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Cleanup the first created user\n"); - err = TestCleanupTheFirstCreatedUser_19(); - break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Cleanup the second created user\n"); - err = TestCleanupTheSecondCreatedUser_20(); + err = TestThSendsGetUserCommandToDutWithTheUserIndexAs1_11(); break; } @@ -158832,10 +159675,12 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + VerifyOrReturn(CheckValue("clusterStatus present", status.mClusterStatus.HasValue(), true)); + VerifyOrReturn(CheckValue("clusterStatus value", status.mClusterStatus.Value(), 3)); break; case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -158855,33 +159700,6 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -158895,7 +159713,7 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 21; + const uint16_t mTestCount = 12; chip::Optional mNodeId; chip::Optional mCluster; @@ -158909,8 +159727,34 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; return WaitForCommissionee("alpha", value); } + NSNumber * _Nonnull Current_NumberOfTotalUsersSupported; - CHIP_ERROR TestCreateNewUserWithDefaultParameters_1() + CHIP_ERROR TestThReadsNumberOfTotalUsersSupportedAttributeAndSavesForFutureUse_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeNumberOfTotalUsersSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads NumberOfTotalUsers Supported attribute and saves for future use. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintMinValue("numberOfTotalUsersSupported", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("numberOfTotalUsersSupported", [value unsignedShortValue], 65534U)); + { + Current_NumberOfTotalUsersSupported = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR + TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs1UserNameAsXxxUserUniqueIDAs6452UserStatusAs1UserTypeAs0CredentialRuleAs0_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -158925,19 +159769,22 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { params.userStatus = [NSNumber numberWithUnsignedChar:1U]; params.userType = [NSNumber numberWithUnsignedChar:0U]; params.credentialRule = [NSNumber numberWithUnsignedChar:0U]; - [cluster setUserWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Create new user with default parameters Error: %@", err); + [cluster + setUserWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 " + @"UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 0 CredentialRule as 0 Error: %@", + err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserBackAndVerifyItsFields_2() + CHIP_ERROR TestThSendsGetUserCommandToDutWithUserIndexAs1_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -158948,7 +159795,7 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { params.userIndex = [NSNumber numberWithUnsignedShort:1U]; [cluster getUserWithParams:params completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"Read the user back and verify its fields Error: %@", err); + NSLog(@"TH sends Get User Command to DUT with UserIndex as 1 Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -159015,315 +159862,184 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { return CHIP_NO_ERROR; } - NSNumber * _Nonnull NumberOfTotalUsersSupported; - - CHIP_ERROR TestThReadsNumberOfTotalUsersSupportedAttributeAndSavesForFutureUse_3() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeNumberOfTotalUsersSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads NumberOfTotalUsersSupported attribute and saves for future use. Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintMinValue("numberOfTotalUsersSupported", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("numberOfTotalUsersSupported", [value unsignedShortValue], 65534U)); - { - NumberOfTotalUsersSupported = value; - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - CHIP_ERROR TestThSendsSetCredentialCommandToDut_4() + CHIP_ERROR + TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs2UserNameAsXxxUserUniqueIDAs6452UserStatusAs1UserTypeAs10InvalidValueCredentialRuleAs3_4() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterSetCredentialParams alloc] init]; + __auto_type * params = [[MTRDoorLockClusterSetUserParams alloc] init]; params.operationType = [NSNumber numberWithUnsignedChar:0U]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; - - params.credentialData = [[NSData alloc] initWithBytes:"123456" length:6]; - params.userIndex = [NSNumber numberWithUnsignedShort:1U]; - params.userStatus = nil; - params.userType = nil; + params.userIndex = [NSNumber numberWithUnsignedShort:2U]; + params.userName = @"xxx"; + params.userUniqueID = [NSNumber numberWithUnsignedInt:6452UL]; + params.userStatus = [NSNumber numberWithUnsignedChar:1U]; + params.userType = [NSNumber numberWithUnsignedChar:10U]; + params.credentialRule = [NSNumber numberWithUnsignedChar:3U]; [cluster - setCredentialWithParams:params - completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"TH sends Set Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.status; - VerifyOrReturn(CheckValue("Status", actualValue, 0U)); - } - - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } - - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNonNull("NextCredentialIndex", actualValue)); - VerifyOrReturn(CheckValue("NextCredentialIndex", actualValue, 2U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestThSendsGetCredentialStatusCommand_5() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRDoorLockClusterGetCredentialStatusParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; - - [cluster getCredentialStatusWithParams:params - completion:^(MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, - NSError * _Nullable err) { - NSLog(@"TH sends Get Credential Status Command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("credentialExists", "boolean", "boolean")); - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNonNull("UserIndex", actualValue)); - VerifyOrReturn(CheckValue("UserIndex", actualValue, 1U)); - } - - { - id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNonNull("CreatorFabricIndex", actualValue)); - VerifyOrReturn(CheckValue("CreatorFabricIndex", actualValue, 1U)); - } - - { - id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNonNull("LastModifiedFabricIndex", actualValue)); - VerifyOrReturn(CheckValue("LastModifiedFabricIndex", actualValue, 1U)); - } - - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNull("NextCredentialIndex", actualValue)); - } + setUserWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 " + @"UserName as xxx UserUniqueID as 6452 UserStatus as 1 UserType as 10 (Invalid value) CredentialRule " + @"as 3 Error: %@", + err); - NextTest(); - }]; + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] ? err.code : EMBER_ZCL_STATUS_FAILURE) : 0, + EMBER_ZCL_STATUS_INVALID_COMMAND)); + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsSetCredentialCommandToDut_6() + CHIP_ERROR + TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs1SameAsStep2UserNameAsXxxUserUniqueIDAs8965UserStatusAs1UserTypeAs0CredentialRuleAs0_5() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterSetCredentialParams alloc] init]; + __auto_type * params = [[MTRDoorLockClusterSetUserParams alloc] init]; params.operationType = [NSNumber numberWithUnsignedChar:0U]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:2U]; - - params.credentialData = [[NSData alloc] initWithBytes:"4321" length:4]; - params.userIndex = nil; - params.userStatus = [NSNumber numberWithUnsignedChar:5U]; - params.userType = [NSNumber numberWithUnsignedChar:10U]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userName = @"xxx"; + params.userUniqueID = [NSNumber numberWithUnsignedInt:8965UL]; + params.userStatus = [NSNumber numberWithUnsignedChar:1U]; + params.userType = [NSNumber numberWithUnsignedChar:0U]; + params.credentialRule = [NSNumber numberWithUnsignedChar:0U]; [cluster - setCredentialWithParams:params - completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"TH sends Set Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.status; - VerifyOrReturn(CheckValue("Status", actualValue, 133U)); - } - - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } + setUserWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 1 (Same " + @"as step 2) UserName as xxx UserUniqueID as 8965 UserStatus as 1 UserType as 0 CredentialRule as 0 " + @"Error: %@", + err); - NextTest(); - }]; + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] ? err.code : EMBER_ZCL_STATUS_FAILURE) : 0, + EMBER_ZCL_STATUS_FAILURE)); + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsSetCredentialCommandToDut_7() + CHIP_ERROR + TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs0UserIndexAs2UserNameAsNullUserUniqueIDAsNullUserStatusAsNullUserTypeAsNullCredentialRuleAsNull_6() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterSetCredentialParams alloc] init]; + __auto_type * params = [[MTRDoorLockClusterSetUserParams alloc] init]; params.operationType = [NSNumber numberWithUnsignedChar:0U]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:2U]; - - params.credentialData = [[NSData alloc] initWithBytes:"123456" length:6]; - params.userIndex = nil; + params.userIndex = [NSNumber numberWithUnsignedShort:2U]; + params.userName = nil; + params.userUniqueID = nil; params.userStatus = nil; params.userType = nil; - [cluster - setCredentialWithParams:params - completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"TH sends Set Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.status; - VerifyOrReturn(CheckValue("Status", actualValue, 2U)); - } + params.credentialRule = nil; + [cluster setUserWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends Set User Command to DUT with the following values: OperationType as 0 UserIndex as 2 " + @"UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as " + @"NULL Error: %@", + err); - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR - TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithStatusAsDuplicateOrOccupied_8() - { - - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR - TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithResponseAsOccupiedIfTheCredentialIndexIsRepeated_9() - { - - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR - TestThSendsSetCredentialCommandToDutAndVerifyThatTheDutSendsSetCredentialResponseCommandWithResponseAsOccupiedIfTheCredentialIndexIsRepeated_10() - { - - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestThSendsClearCredentialCommandToDut_11() + CHIP_ERROR TestThSendsGetUserCommandToDutWithUserIndexAs2_7() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterClearCredentialParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; - - [cluster clearCredentialWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"TH sends Clear Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; + __auto_type * params = [[MTRDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:2U]; + [cluster getUserWithParams:params + completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"TH sends Get User Command to DUT with UserIndex as 2 Error: %@", err); - return CHIP_NO_ERROR; - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - CHIP_ERROR TestThSendsGetCredentialStatusCommandToDut_12() - { + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("UserIndex", actualValue, 2U)); + } - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNonNull("UserName", actualValue)); + VerifyOrReturn(CheckValueAsString("UserName", actualValue, @"")); + } - __auto_type * params = [[MTRDoorLockClusterGetCredentialStatusParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + { + id actualValue = values.userUniqueID; + VerifyOrReturn(CheckValueNull("UserUniqueID", actualValue)); + } - [cluster getCredentialStatusWithParams:params - completion:^(MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, - NSError * _Nullable err) { - NSLog(@"TH sends Get Credential Status Command to DUT Error: %@", err); + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNonNull("UserStatus", actualValue)); + VerifyOrReturn(CheckValue("UserStatus", actualValue, 1U)); + } - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNonNull("UserType", actualValue)); + VerifyOrReturn(CheckValue("UserType", actualValue, 0U)); + } - { - id actualValue = values.credentialExists; - VerifyOrReturn(CheckValue("CredentialExists", actualValue, false)); - } + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNonNull("CredentialRule", actualValue)); + VerifyOrReturn(CheckValue("CredentialRule", actualValue, 0U)); + } - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNonNull("Credentials", actualValue)); + VerifyOrReturn(CheckValue("Credentials", [actualValue count], static_cast(0))); + } - { - id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNull("CreatorFabricIndex", actualValue)); - } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("CreatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("CreatorFabricIndex", actualValue, 1U)); + } - { - id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNull("LastModifiedFabricIndex", actualValue)); - } + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("LastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("LastModifiedFabricIndex", actualValue, 1U)); + } - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNull("NextCredentialIndex", actualValue)); - } + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNull("NextUserIndex", actualValue)); + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsSetUserCommandToDut_13() + CHIP_ERROR + TestThSendsSetUserCommandToDutWithTheFollowingValuesOperationTypeAs2UserIndexAs2UserNameAsNullUserUniqueIDAsNullUserStatusAsNullUserTypeAsNullCredentialRuleAsNull_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -159331,16 +160047,19 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); __auto_type * params = [[MTRDoorLockClusterSetUserParams alloc] init]; - params.operationType = [NSNumber numberWithUnsignedChar:0U]; + params.operationType = [NSNumber numberWithUnsignedChar:2U]; params.userIndex = [NSNumber numberWithUnsignedShort:2U]; - params.userName = @"xxx"; - params.userUniqueID = [NSNumber numberWithUnsignedInt:6452UL]; - params.userStatus = [NSNumber numberWithUnsignedChar:1U]; - params.userType = [NSNumber numberWithUnsignedChar:0U]; - params.credentialRule = [NSNumber numberWithUnsignedChar:0U]; + params.userName = nil; + params.userUniqueID = nil; + params.userStatus = nil; + params.userType = nil; + params.credentialRule = nil; [cluster setUserWithParams:params completion:^(NSError * _Nullable err) { - NSLog(@"TH sends Set User Command to DUT Error: %@", err); + NSLog(@"TH sends Set User Command to DUT with the following values: OperationType as 2 UserIndex as 2 " + @"UserName as NULL UserUniqueID as NULL UserStatus as NULL UserType as NULL CredentialRule as " + @"NULL Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -159350,235 +160069,173 @@ class Test_TC_DRLK_2_9 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsSetCredentialCommandToDut_14() + CHIP_ERROR TestThSendsGetUserCommandToDutWithTheUserIndexAs2_9() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterSetCredentialParams alloc] init]; - params.operationType = [NSNumber numberWithUnsignedChar:0U]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; - - params.credentialData = [[NSData alloc] initWithBytes:"123456" length:6]; + __auto_type * params = [[MTRDoorLockClusterGetUserParams alloc] init]; params.userIndex = [NSNumber numberWithUnsignedShort:2U]; - params.userStatus = nil; - params.userType = nil; - [cluster - setCredentialWithParams:params - completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"TH sends Set Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.status; - VerifyOrReturn(CheckValue("Status", actualValue, 0U)); - } - - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestThSendsClearCredentialCommandToDut_15() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRDoorLockClusterClearCredentialParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:65534U]; - - [cluster clearCredentialWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"TH sends Clear Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; + [cluster getUserWithParams:params + completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"TH sends Get User Command to DUT with the UserIndex as 2 Error: %@", err); - return CHIP_NO_ERROR; - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - CHIP_ERROR TestThSendsGetCredentialStatusCommand_16() - { + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("UserIndex", actualValue, 2U)); + } - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNonNull("UserName", actualValue)); + VerifyOrReturn(CheckValueAsString("UserName", actualValue, @"")); + } - __auto_type * params = [[MTRDoorLockClusterGetCredentialStatusParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:65534U]; + { + id actualValue = values.userUniqueID; + VerifyOrReturn(CheckValueNull("UserUniqueID", actualValue)); + } - [cluster getCredentialStatusWithParams:params - completion:^(MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, - NSError * _Nullable err) { - NSLog(@"TH sends Get Credential Status Command Error: %@", err); + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNonNull("UserStatus", actualValue)); + VerifyOrReturn(CheckValue("UserStatus", actualValue, 1U)); + } - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNonNull("UserType", actualValue)); + VerifyOrReturn(CheckValue("UserType", actualValue, 0U)); + } - { - id actualValue = values.credentialExists; - VerifyOrReturn(CheckValue("CredentialExists", actualValue, false)); - } + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNonNull("CredentialRule", actualValue)); + VerifyOrReturn(CheckValue("CredentialRule", actualValue, 0U)); + } - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNonNull("Credentials", actualValue)); + VerifyOrReturn(CheckValue("Credentials", [actualValue count], static_cast(0))); + } - { - id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNull("CreatorFabricIndex", actualValue)); - } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("CreatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("CreatorFabricIndex", actualValue, 1U)); + } - { - id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNull("LastModifiedFabricIndex", actualValue)); - } + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("LastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("LastModifiedFabricIndex", actualValue, 1U)); + } - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNull("NextCredentialIndex", actualValue)); - } + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNull("NextUserIndex", actualValue)); + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsGetCredentialStatusCommand_17() + CHIP_ERROR TestThSendsClearUserCommandToDutWithTheUserIndexAs1_10() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterGetCredentialStatusParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; - - [cluster getCredentialStatusWithParams:params - completion:^(MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, - NSError * _Nullable err) { - NSLog(@"TH sends Get Credential Status Command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.credentialExists; - VerifyOrReturn(CheckValue("CredentialExists", actualValue, false)); - } - - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("UserIndex", actualValue)); - } - - { - id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNull("CreatorFabricIndex", actualValue)); - } - - { - id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNull("LastModifiedFabricIndex", actualValue)); - } + __auto_type * params = [[MTRDoorLockClusterClearUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + [cluster clearUserWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"TH sends Clear User Command to DUT with the UserIndex as 1 Error: %@", err); - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNull("NextCredentialIndex", actualValue)); - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsClearCredentialCommandToDut_18() + CHIP_ERROR TestThSendsGetUserCommandToDutWithTheUserIndexAs1_11() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRDoorLockClusterClearCredentialParams alloc] init]; - params.credential = [[MTRDoorLockClusterCredentialStruct alloc] init]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:8U]; - ((MTRDoorLockClusterCredentialStruct *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:2U]; - - [cluster clearCredentialWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"TH sends Clear Credential Command to DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_INVALID_COMMAND)); - NextTest(); - }]; + __auto_type * params = [[MTRDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + [cluster getUserWithParams:params + completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"TH sends Get User Command to DUT with the UserIndex as 1 Error: %@", err); - return CHIP_NO_ERROR; - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - CHIP_ERROR TestCleanupTheFirstCreatedUser_19() - { + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("UserIndex", actualValue, 1U)); + } - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNull("UserName", actualValue)); + } - __auto_type * params = [[MTRDoorLockClusterClearUserParams alloc] init]; - params.userIndex = [NSNumber numberWithUnsignedShort:1U]; - [cluster clearUserWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Cleanup the first created user Error: %@", err); + { + id actualValue = values.userUniqueID; + VerifyOrReturn(CheckValueNull("UserUniqueID", actualValue)); + } - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNull("UserStatus", actualValue)); + } - NextTest(); - }]; + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNull("UserType", actualValue)); + } - return CHIP_NO_ERROR; - } + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNull("CredentialRule", actualValue)); + } - CHIP_ERROR TestCleanupTheSecondCreatedUser_20() - { + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNull("Credentials", actualValue)); + } - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("CreatorFabricIndex", actualValue)); + } - __auto_type * params = [[MTRDoorLockClusterClearUserParams alloc] init]; - params.userIndex = [NSNumber numberWithUnsignedShort:2U]; - [cluster clearUserWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Cleanup the second created user Error: %@", err); + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("LastModifiedFabricIndex", actualValue)); + } - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNonNull("NextUserIndex", actualValue)); + VerifyOrReturn(CheckValue("NextUserIndex", actualValue, 2U)); + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } @@ -167598,6 +168255,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), @@ -167638,6 +168296,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), @@ -167743,7 +168402,6 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), make_unique(), make_unique(), make_unique(), @@ -167805,7 +168463,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h index 39a1b1b91f1eaa..7ceb1dc252129e 100644 --- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h @@ -1206,228 +1206,6 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand } }; -class Test_TC_PS_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_PS_3_1_SimulatedSuite() : TestCommand("Test_TC_PS_3_1_Simulated", 34) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_PS_3_1_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Read attribute: Status"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Status::Id); - } - case 1: { - LogStep(1, "Read attribute: Order"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Order::Id); - } - case 2: { - LogStep(2, "Read attribute: Description"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Description::Id); - } - case 3: { - LogStep(3, "Read attribute: WiredAssessedInputVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedInputVoltage::Id); - } - case 4: { - LogStep(4, "Read attribute: WiredAssessedInputFrequency"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedInputFrequency::Id); - } - case 5: { - LogStep(5, "Read attribute: WiredCurrentType"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredCurrentType::Id); - } - case 6: { - LogStep(6, "Read attribute: WiredAssessedCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedCurrent::Id); - } - case 7: { - LogStep(7, "Read attribute: WiredNominalVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredNominalVoltage::Id); - } - case 8: { - LogStep(8, "Read attribute: WiredPresent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredPresent::Id); - } - case 9: { - LogStep(9, "Read attribute: WiredMaximumCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredMaximumCurrent::Id); - } - case 10: { - LogStep(10, "Read attribute: ActiveWiredFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveWiredFaults::Id); - } - case 11: { - LogStep(11, "Read attribute: BatVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatVoltage::Id); - } - case 12: { - LogStep(12, "Read attribute: BatPercentRemaining"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatPercentRemaining::Id); - } - case 13: { - LogStep(13, "Read attribute: BatTimeRemaining"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatTimeRemaining::Id); - } - case 14: { - LogStep(14, "Read attribute: BatChargeLevel"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargeLevel::Id); - } - case 15: { - LogStep(15, "Read attribute: BatReplacementNeeded"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplacementNeeded::Id); - } - case 16: { - LogStep(16, "Read attribute: BatReplaceability"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplaceability::Id); - } - case 17: { - LogStep(17, "Read attribute: BatPresent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatPresent::Id); - } - case 18: { - LogStep(18, "Read attribute: ActiveBatFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveBatFaults::Id); - } - case 19: { - LogStep(19, "Read attribute: BatReplacementDescription"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplacementDescription::Id); - } - case 20: { - LogStep(20, "Read attribute: BatCommonDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatCommonDesignation::Id); - } - case 21: { - LogStep(21, "Read attribute: BatANSIDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatANSIDesignation::Id); - } - case 22: { - LogStep(22, "Read attribute: BatIECDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatIECDesignation::Id); - } - case 23: { - LogStep(23, "Read attribute: BatApprovedChemistry"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatApprovedChemistry::Id); - } - case 24: { - LogStep(24, "Read attribute: BatCapacity"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatCapacity::Id); - } - case 25: { - LogStep(25, "Read attribute: BatQuantity"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatQuantity::Id); - } - case 26: { - LogStep(26, "Read attribute: BatChargeState"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargeState::Id); - } - case 27: { - LogStep(27, "Read attribute: BatTimeToFullCharge"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatTimeToFullCharge::Id); - } - case 28: { - LogStep(28, "Read attribute: BatFunctionalWhileCharging"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatFunctionalWhileCharging::Id); - } - case 29: { - LogStep(29, "Read attribute: BatChargingCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargingCurrent::Id); - } - case 30: { - LogStep(30, "Read attribute: ActiveBatChargeFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveBatChargeFaults::Id); - } - case 31: { - LogStep(31, - "Configure TH such that it implements mandatory and none of the optional attributes of the server-side of the " - "cluster, and that it also reflects this in global attributes such as FeatureMap and AttributeList. Commission " - "DUT to TH again"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 32: { - LogStep(32, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 33: { - LogStep(33, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PS.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: @@ -4000,10 +3778,10 @@ class Test_TC_DGTHREAD_3_2_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads TxUnicastCount attribute value from TH"); + LogStep(0, "DUT reads TxTotalCount attribute value from TH"); VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxUnicastCount::Id); + ThreadNetworkDiagnostics::Attributes::TxTotalCount::Id); } case 1: { LogStep(1, "DUT reads TxUnicastCount attribute value from TH"); @@ -5218,85 +4996,864 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand } }; -std::unique_ptr GetTestCommand(std::string testName) +class Test_TC_CC_2_2_SimulatedSuite : public TestCommand { - if (testName == "Test_TC_BINFO_2_3_Simulated") - { - return std::unique_ptr(new Test_TC_BINFO_2_3_SimulatedSuite()); - } - if (testName == "Test_TC_ACT_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_BOOL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DESC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGETH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGSW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGWIFI_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_FLW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_G_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_I_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PRS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PSCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_RH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_SWTCH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_WNCV_5_1_Simulated") - { - return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); - } - if (testName == "Test_TC_LCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_LUNIT_1_1_Simulated") +public: + Test_TC_CC_2_2_SimulatedSuite() : TestCommand("Test_TC_CC_2_2_Simulated", 52) { - return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - if (testName == "Test_TC_LUNIT_2_1_Simulated") + + ~Test_TC_CC_2_2_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override { - return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } } - if (testName == "Test_TC_OCC_2_2_Simulated") + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "DUT reads from the TH the (0x0000) CurrentHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 1: { + LogStep(1, "DUT reads from the TH the (0x0001) CurrentSaturation attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); + } + case 2: { + LogStep(2, "DUT reads from the TH the Optional (0x0002) RemainingTime attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id); + } + case 3: { + LogStep(3, "DUT reads from the TH the (0x0003) CurrentX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 4: { + LogStep(4, "DUT reads from the TH the (0x0004) CurrentY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 5: { + LogStep(5, "DUT reads from the TH the Optional (0x0005) DriftCompensation attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id); + } + case 6: { + LogStep(6, "DUT reads from the TH the Optional (0x0006) CompensationText attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id); + } + case 7: { + LogStep(7, "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 8: { + LogStep(8, "DUT reads from the TH the (0x0008) ColorMode attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id); + } + case 9: { + LogStep(9, "DUT reads from the TH the (0x000f) Options attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id); + } + case 10: { + LogStep(10, "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 11: { + LogStep(11, "DUT reads from the TH the (0x4001) EnhancedColorMode attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id); + } + case 12: { + LogStep(12, "DUT reads from the TH the (0x4002) ColorLoopActive attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); + } + case 13: { + LogStep(13, "DUT reads from the TH the (0x4003) ColorLoopDirection attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); + } + case 14: { + LogStep(14, "DUT reads from the TH the (0x4004) ColorLoopTime attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); + } + case 15: { + LogStep(15, "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); + } + case 16: { + LogStep(16, "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id); + } + case 17: { + LogStep(17, "DUT reads from the TH the (0x400a) ColorCapabilities attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id); + } + case 18: { + LogStep(18, "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); + } + case 19: { + LogStep(19, "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); + } + case 20: { + LogStep(20, "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id); + } + case 21: { + LogStep(21, "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id); + } + case 22: { + LogStep(22, "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::NumberOfPrimaries::Id); + } + case 23: { + LogStep(23, "DUT reads from the TH the (0x0011) Primary1X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id); + } + case 24: { + LogStep(24, "DUT reads from the TH the (0x0012) Primary1Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id); + } + case 25: { + LogStep(25, "DUT reads from the TH the (0x0013) Primary1Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id); + } + case 26: { + LogStep(26, "DUT reads from the TH the (0x0015) Primary2X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id); + } + case 27: { + LogStep(27, "DUT reads from the TH the (0x0016) Primary2Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id); + } + case 28: { + LogStep(28, "DUT reads from the TH the (0x0017) Primary2Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id); + } + case 29: { + LogStep(29, "DUT reads from the TH the (0x0019) Primary3X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id); + } + case 30: { + LogStep(30, "DUT reads from the TH the (0x001a) Primary3Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id); + } + case 31: { + LogStep(31, "DUT reads from the TH the (0x001b) Primary3Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id); + } + case 32: { + LogStep(32, "DUT reads from the TH the (0x0020) Primary4X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id); + } + case 33: { + LogStep(33, "DUT reads from the TH the (0x0021) Primary4Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id); + } + case 34: { + LogStep(34, "DUT reads from the TH the (0x0022) Primary4Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id); + } + case 35: { + LogStep(35, "DUT reads from the TH the (0x0024) Primary5X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id); + } + case 36: { + LogStep(36, "DUT reads from the TH the (0x0025) Primary5Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id); + } + case 37: { + LogStep(37, "DUT reads from the TH the (0x0026) Primary5Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id); + } + case 38: { + LogStep(38, "DUT reads from the TH the (0x0028) Primary6X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id); + } + case 39: { + LogStep(39, "DUT reads from the TH the (0x0029) Primary6Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id); + } + case 40: { + LogStep(40, "DUT reads from the TH the (0x002a) Primary6Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id); + } + case 41: { + LogStep(41, "DUT reads from the TH the Optional (0x0030) WhitePointX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointX::Id); + } + case 42: { + LogStep(42, "DUT reads from the TH the Optional (0x0031) WhitePointY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointY::Id); + } + case 43: { + LogStep(43, "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRX::Id); + } + case 44: { + LogStep(44, "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRY::Id); + } + case 45: { + LogStep(45, "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRIntensity::Id); + } + case 46: { + LogStep(46, "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGX::Id); + } + case 47: { + LogStep(47, "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGY::Id); + } + case 48: { + LogStep(48, "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGIntensity::Id); + } + case 49: { + LogStep(49, "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBX::Id); + } + case 50: { + LogStep(50, "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBY::Id); + } + case 51: { + LogStep(51, "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBIntensity::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_DGTHREAD_3_1_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_1_Simulated", 30) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DGTHREAD_3_1_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads Channel attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Channel::Id); + } + case 2: { + LogStep(2, "DUT reads RoutingRole attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RoutingRole::Id); + } + case 3: { + LogStep(3, "DUT reads NetworkName attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::NetworkName::Id); + } + case 4: { + LogStep(4, "DUT reads PanId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::PanId::Id); + } + case 5: { + LogStep(5, "DUT reads ExtendedPanId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ExtendedPanId::Id); + } + case 6: { + LogStep(6, "DUT reads MeshLocalPrefix attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::Id); + } + case 7: { + LogStep(7, "DUT reads OverrunCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); + } + case 8: { + LogStep(8, "DUT reads NeighborTable attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::NeighborTable::Id); + } + case 9: { + LogStep(9, "DUT reads RouteTable attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RouteTable::Id); + } + case 10: { + LogStep(10, "DUT reads PartitionId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PartitionId::Id); + } + case 11: { + LogStep(11, "DUT reads Weighting attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Weighting::Id); + } + case 12: { + LogStep(12, "DUT reads DataVersion attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::DataVersion::Id); + } + case 13: { + LogStep(13, "DUT reads StableDataVersion attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::StableDataVersion::Id); + } + case 14: { + LogStep(14, "DUT reads LeaderRouterId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::LeaderRouterId::Id); + } + case 15: { + LogStep(15, "DUT reads DetachedRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::Id); + } + case 16: { + LogStep(16, "DUT reads ChildRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ChildRoleCount::Id); + } + case 17: { + LogStep(17, "DUT reads RouterRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RouterRoleCount::Id); + } + case 18: { + LogStep(18, "DUT reads LeaderRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::Id); + } + case 19: { + LogStep(19, "DUT reads AttachAttemptCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::Id); + } + case 20: { + LogStep(20, "DUT reads PartitionIdChangeCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::Id); + } + case 21: { + LogStep(21, "DUT reads BetterPartitionAttachAttemptCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::Id); + } + case 22: { + LogStep(22, "DUT reads ParentChangeCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ParentChangeCount::Id); + } + case 23: { + LogStep(23, "DUT reads ActiveTimestamp attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::Id); + } + case 24: { + LogStep(24, "DUT reads PendingTimestamp attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0039"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PendingTimestamp::Id); + } + case 25: { + LogStep(25, "DUT reads Delay attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Delay::Id); + } + case 26: { + LogStep(26, "DUT reads SecurityPolicy attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::SecurityPolicy::Id); + } + case 27: { + LogStep(27, "DUT reads ChannelPage0Mask attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::Id); + } + case 28: { + LogStep(28, "DUT reads OperationalDatasetComponents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::Id); + } + case 29: { + LogStep(29, "DUT reads ActiveNetworkFaults attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_DRLK_3_1_SimulatedSuite() : TestCommand("Test_TC_DRLK_3_1_Simulated", 37) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DRLK_3_1_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads LockState attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockState::Id); + } + case 2: { + LogStep(2, "DUT reads LockType attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockType::Id); + } + case 3: { + LogStep(3, "DUT reads ActuatorEnabled attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ActuatorEnabled::Id); + } + case 4: { + LogStep(4, "DUT reads DoorState attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorState::Id); + } + case 5: { + LogStep(5, "DUT reads DoorOpenEvents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorOpenEvents::Id); + } + case 6: { + LogStep(6, "DUT reads DoorClosedEvents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorClosedEvents::Id); + } + case 7: { + LogStep(7, "DUT reads OpenPeriod attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OpenPeriod::Id); + } + case 8: { + LogStep(8, "DUT reads NumberOfTotalUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfTotalUsersSupported::Id); + } + case 9: { + LogStep(9, "DUT reads NumberofPINUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfPINUsersSupported::Id); + } + case 10: { + LogStep(10, "DUT reads NumberofRFIDUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfRFIDUsersSupported::Id); + } + case 11: { + LogStep(11, "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::Id); + } + case 12: { + LogStep(12, "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id); + } + case 13: { + LogStep(13, "DUT reads NumberofHolidaySchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfHolidaySchedulesSupported::Id); + } + case 14: { + LogStep(14, "DUT reads MaxPINCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxPINCodeLength::Id); + } + case 15: { + LogStep(15, "DUT reads MinPINCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinPINCodeLength::Id); + } + case 16: { + LogStep(16, "DUT reads MaxRFIDCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxRFIDCodeLength::Id); + } + case 17: { + LogStep(17, "DUT reads MinRFIDCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinRFIDCodeLength::Id); + } + case 18: { + LogStep(18, "DUT reads CredentialRulesSupport attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::CredentialRulesSupport::Id); + } + case 19: { + LogStep(19, "DUT reads Language attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::Language::Id); + } + case 20: { + LogStep(20, "DUT reads LEDSettings attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LEDSettings::Id); + } + case 21: { + LogStep(21, "DUT reads AutoRelockTime attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id); + } + case 22: { + LogStep(22, "DUT reads SoundVolume attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SoundVolume::Id); + } + case 23: { + LogStep(23, "DUT reads OperatingMode attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OperatingMode::Id); + } + case 24: { + LogStep(24, "DUT reads SupportedOperatingModes attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SupportedOperatingModes::Id); + } + case 25: { + LogStep(25, "DUT reads DefaultConfigurationRegister attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DefaultConfigurationRegister::Id); + } + case 26: { + LogStep(26, "DUT reads EnableLocalProgramming attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableLocalProgramming::Id); + } + case 27: { + LogStep(27, "DUT reads EnableOneTouchLocking attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableOneTouchLocking::Id); + } + case 28: { + LogStep(28, "DUT reads EnableInsideStatusLED attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableInsideStatusLED::Id); + } + case 29: { + LogStep(29, "DUT reads EnablePrivacyModeButton attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnablePrivacyModeButton::Id); + } + case 30: { + LogStep(30, "DUT reads LocalProgrammingFeatures attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LocalProgrammingFeatures::Id); + } + case 31: { + LogStep(31, "DUT reads WrongCodeEntryLimit attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::WrongCodeEntryLimit::Id); + } + case 32: { + LogStep(32, "DUT reads UserCodeTemporaryDisableTime attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::UserCodeTemporaryDisableTime::Id); + } + case 33: { + LogStep(33, "DUT reads SendPINOverTheAir attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SendPINOverTheAir::Id); + } + case 34: { + LogStep(34, "DUT reads RequirePINForRemoteOperation attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::RequirePINforRemoteOperation::Id); + } + case 35: { + LogStep(35, "DUT reads ExpiringUserTimeOut attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ExpiringUserTimeout::Id); + } + case 36: { + LogStep(36, "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +std::unique_ptr GetTestCommand(std::string testName) +{ + if (testName == "Test_TC_BINFO_2_3_Simulated") + { + return std::unique_ptr(new Test_TC_BINFO_2_3_SimulatedSuite()); + } + if (testName == "Test_TC_ACT_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_BOOL_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DESC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_DGETH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DGSW_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DGWIFI_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_FLW_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_G_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_I_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_PRS_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_PSCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_RH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_SWTCH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_WNCV_5_1_Simulated") + { + return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); + } + if (testName == "Test_TC_LCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_1_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_2_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_2_Simulated") { return std::unique_ptr(new Test_TC_OCC_2_2_SimulatedSuite()); } @@ -5400,6 +5957,18 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_TMP_3_1_SimulatedSuite()); } + if (testName == "Test_TC_CC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_CC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_DGTHREAD_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGTHREAD_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DRLK_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DRLK_3_1_SimulatedSuite()); + } return nullptr; } @@ -5418,7 +5987,6 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_G_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_I_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PRS_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PS_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PSCFG_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_RH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_SWTCH_3_1_Simulated"); @@ -5452,4 +6020,7 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_TSUIC_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PCC_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_TMP_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_CC_2_2_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_DRLK_3_1_Simulated"); } diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h index 39a1b1b91f1eaa..7ceb1dc252129e 100644 --- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h @@ -1206,228 +1206,6 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand } }; -class Test_TC_PS_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_PS_3_1_SimulatedSuite() : TestCommand("Test_TC_PS_3_1_Simulated", 34) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_PS_3_1_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Read attribute: Status"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Status::Id); - } - case 1: { - LogStep(1, "Read attribute: Order"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Order::Id); - } - case 2: { - LogStep(2, "Read attribute: Description"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::Description::Id); - } - case 3: { - LogStep(3, "Read attribute: WiredAssessedInputVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedInputVoltage::Id); - } - case 4: { - LogStep(4, "Read attribute: WiredAssessedInputFrequency"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedInputFrequency::Id); - } - case 5: { - LogStep(5, "Read attribute: WiredCurrentType"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredCurrentType::Id); - } - case 6: { - LogStep(6, "Read attribute: WiredAssessedCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredAssessedCurrent::Id); - } - case 7: { - LogStep(7, "Read attribute: WiredNominalVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredNominalVoltage::Id); - } - case 8: { - LogStep(8, "Read attribute: WiredPresent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredPresent::Id); - } - case 9: { - LogStep(9, "Read attribute: WiredMaximumCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::WiredMaximumCurrent::Id); - } - case 10: { - LogStep(10, "Read attribute: ActiveWiredFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveWiredFaults::Id); - } - case 11: { - LogStep(11, "Read attribute: BatVoltage"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatVoltage::Id); - } - case 12: { - LogStep(12, "Read attribute: BatPercentRemaining"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatPercentRemaining::Id); - } - case 13: { - LogStep(13, "Read attribute: BatTimeRemaining"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatTimeRemaining::Id); - } - case 14: { - LogStep(14, "Read attribute: BatChargeLevel"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargeLevel::Id); - } - case 15: { - LogStep(15, "Read attribute: BatReplacementNeeded"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplacementNeeded::Id); - } - case 16: { - LogStep(16, "Read attribute: BatReplaceability"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplaceability::Id); - } - case 17: { - LogStep(17, "Read attribute: BatPresent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatPresent::Id); - } - case 18: { - LogStep(18, "Read attribute: ActiveBatFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveBatFaults::Id); - } - case 19: { - LogStep(19, "Read attribute: BatReplacementDescription"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatReplacementDescription::Id); - } - case 20: { - LogStep(20, "Read attribute: BatCommonDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatCommonDesignation::Id); - } - case 21: { - LogStep(21, "Read attribute: BatANSIDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatANSIDesignation::Id); - } - case 22: { - LogStep(22, "Read attribute: BatIECDesignation"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatIECDesignation::Id); - } - case 23: { - LogStep(23, "Read attribute: BatApprovedChemistry"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatApprovedChemistry::Id); - } - case 24: { - LogStep(24, "Read attribute: BatCapacity"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatCapacity::Id); - } - case 25: { - LogStep(25, "Read attribute: BatQuantity"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatQuantity::Id); - } - case 26: { - LogStep(26, "Read attribute: BatChargeState"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargeState::Id); - } - case 27: { - LogStep(27, "Read attribute: BatTimeToFullCharge"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatTimeToFullCharge::Id); - } - case 28: { - LogStep(28, "Read attribute: BatFunctionalWhileCharging"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatFunctionalWhileCharging::Id); - } - case 29: { - LogStep(29, "Read attribute: BatChargingCurrent"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::BatChargingCurrent::Id); - } - case 30: { - LogStep(30, "Read attribute: ActiveBatChargeFaults"); - return WaitAttribute(GetEndpoint(0), PowerSource::Id, PowerSource::Attributes::ActiveBatChargeFaults::Id); - } - case 31: { - LogStep(31, - "Configure TH such that it implements mandatory and none of the optional attributes of the server-side of the " - "cluster, and that it also reflects this in global attributes such as FeatureMap and AttributeList. Commission " - "DUT to TH again"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 32: { - LogStep(32, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 33: { - LogStep(33, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PS.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: @@ -4000,10 +3778,10 @@ class Test_TC_DGTHREAD_3_2_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads TxUnicastCount attribute value from TH"); + LogStep(0, "DUT reads TxTotalCount attribute value from TH"); VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxUnicastCount::Id); + ThreadNetworkDiagnostics::Attributes::TxTotalCount::Id); } case 1: { LogStep(1, "DUT reads TxUnicastCount attribute value from TH"); @@ -5218,85 +4996,864 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand } }; -std::unique_ptr GetTestCommand(std::string testName) +class Test_TC_CC_2_2_SimulatedSuite : public TestCommand { - if (testName == "Test_TC_BINFO_2_3_Simulated") - { - return std::unique_ptr(new Test_TC_BINFO_2_3_SimulatedSuite()); - } - if (testName == "Test_TC_ACT_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_BOOL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DESC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGETH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGSW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGWIFI_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_FLW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_G_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_I_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PRS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PSCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_RH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_SWTCH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_WNCV_5_1_Simulated") - { - return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); - } - if (testName == "Test_TC_LCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_LUNIT_1_1_Simulated") +public: + Test_TC_CC_2_2_SimulatedSuite() : TestCommand("Test_TC_CC_2_2_Simulated", 52) { - return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - if (testName == "Test_TC_LUNIT_2_1_Simulated") + + ~Test_TC_CC_2_2_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override { - return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } } - if (testName == "Test_TC_OCC_2_2_Simulated") + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "DUT reads from the TH the (0x0000) CurrentHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 1: { + LogStep(1, "DUT reads from the TH the (0x0001) CurrentSaturation attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); + } + case 2: { + LogStep(2, "DUT reads from the TH the Optional (0x0002) RemainingTime attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id); + } + case 3: { + LogStep(3, "DUT reads from the TH the (0x0003) CurrentX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 4: { + LogStep(4, "DUT reads from the TH the (0x0004) CurrentY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 5: { + LogStep(5, "DUT reads from the TH the Optional (0x0005) DriftCompensation attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id); + } + case 6: { + LogStep(6, "DUT reads from the TH the Optional (0x0006) CompensationText attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id); + } + case 7: { + LogStep(7, "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 8: { + LogStep(8, "DUT reads from the TH the (0x0008) ColorMode attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id); + } + case 9: { + LogStep(9, "DUT reads from the TH the (0x000f) Options attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id); + } + case 10: { + LogStep(10, "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 11: { + LogStep(11, "DUT reads from the TH the (0x4001) EnhancedColorMode attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id); + } + case 12: { + LogStep(12, "DUT reads from the TH the (0x4002) ColorLoopActive attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); + } + case 13: { + LogStep(13, "DUT reads from the TH the (0x4003) ColorLoopDirection attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); + } + case 14: { + LogStep(14, "DUT reads from the TH the (0x4004) ColorLoopTime attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); + } + case 15: { + LogStep(15, "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); + } + case 16: { + LogStep(16, "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id); + } + case 17: { + LogStep(17, "DUT reads from the TH the (0x400a) ColorCapabilities attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id); + } + case 18: { + LogStep(18, "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); + } + case 19: { + LogStep(19, "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); + } + case 20: { + LogStep(20, "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id); + } + case 21: { + LogStep(21, "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id); + } + case 22: { + LogStep(22, "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::NumberOfPrimaries::Id); + } + case 23: { + LogStep(23, "DUT reads from the TH the (0x0011) Primary1X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id); + } + case 24: { + LogStep(24, "DUT reads from the TH the (0x0012) Primary1Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id); + } + case 25: { + LogStep(25, "DUT reads from the TH the (0x0013) Primary1Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id); + } + case 26: { + LogStep(26, "DUT reads from the TH the (0x0015) Primary2X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id); + } + case 27: { + LogStep(27, "DUT reads from the TH the (0x0016) Primary2Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id); + } + case 28: { + LogStep(28, "DUT reads from the TH the (0x0017) Primary2Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id); + } + case 29: { + LogStep(29, "DUT reads from the TH the (0x0019) Primary3X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id); + } + case 30: { + LogStep(30, "DUT reads from the TH the (0x001a) Primary3Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id); + } + case 31: { + LogStep(31, "DUT reads from the TH the (0x001b) Primary3Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id); + } + case 32: { + LogStep(32, "DUT reads from the TH the (0x0020) Primary4X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id); + } + case 33: { + LogStep(33, "DUT reads from the TH the (0x0021) Primary4Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id); + } + case 34: { + LogStep(34, "DUT reads from the TH the (0x0022) Primary4Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id); + } + case 35: { + LogStep(35, "DUT reads from the TH the (0x0024) Primary5X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id); + } + case 36: { + LogStep(36, "DUT reads from the TH the (0x0025) Primary5Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id); + } + case 37: { + LogStep(37, "DUT reads from the TH the (0x0026) Primary5Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id); + } + case 38: { + LogStep(38, "DUT reads from the TH the (0x0028) Primary6X attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id); + } + case 39: { + LogStep(39, "DUT reads from the TH the (0x0029) Primary6Y attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id); + } + case 40: { + LogStep(40, "DUT reads from the TH the (0x002a) Primary6Intensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id); + } + case 41: { + LogStep(41, "DUT reads from the TH the Optional (0x0030) WhitePointX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointX::Id); + } + case 42: { + LogStep(42, "DUT reads from the TH the Optional (0x0031) WhitePointY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointY::Id); + } + case 43: { + LogStep(43, "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRX::Id); + } + case 44: { + LogStep(44, "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRY::Id); + } + case 45: { + LogStep(45, "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRIntensity::Id); + } + case 46: { + LogStep(46, "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGX::Id); + } + case 47: { + LogStep(47, "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGY::Id); + } + case 48: { + LogStep(48, "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGIntensity::Id); + } + case 49: { + LogStep(49, "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBX::Id); + } + case 50: { + LogStep(50, "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBY::Id); + } + case 51: { + LogStep(51, "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity attribute"); + VerifyOrDo(!ShouldSkip("CC.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBIntensity::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_DGTHREAD_3_1_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_1_Simulated", 30) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DGTHREAD_3_1_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads Channel attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Channel::Id); + } + case 2: { + LogStep(2, "DUT reads RoutingRole attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RoutingRole::Id); + } + case 3: { + LogStep(3, "DUT reads NetworkName attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::NetworkName::Id); + } + case 4: { + LogStep(4, "DUT reads PanId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::PanId::Id); + } + case 5: { + LogStep(5, "DUT reads ExtendedPanId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ExtendedPanId::Id); + } + case 6: { + LogStep(6, "DUT reads MeshLocalPrefix attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::Id); + } + case 7: { + LogStep(7, "DUT reads OverrunCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); + } + case 8: { + LogStep(8, "DUT reads NeighborTable attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::NeighborTable::Id); + } + case 9: { + LogStep(9, "DUT reads RouteTable attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RouteTable::Id); + } + case 10: { + LogStep(10, "DUT reads PartitionId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PartitionId::Id); + } + case 11: { + LogStep(11, "DUT reads Weighting attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Weighting::Id); + } + case 12: { + LogStep(12, "DUT reads DataVersion attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::DataVersion::Id); + } + case 13: { + LogStep(13, "DUT reads StableDataVersion attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::StableDataVersion::Id); + } + case 14: { + LogStep(14, "DUT reads LeaderRouterId attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::LeaderRouterId::Id); + } + case 15: { + LogStep(15, "DUT reads DetachedRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::Id); + } + case 16: { + LogStep(16, "DUT reads ChildRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ChildRoleCount::Id); + } + case 17: { + LogStep(17, "DUT reads RouterRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::RouterRoleCount::Id); + } + case 18: { + LogStep(18, "DUT reads LeaderRoleCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::Id); + } + case 19: { + LogStep(19, "DUT reads AttachAttemptCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::Id); + } + case 20: { + LogStep(20, "DUT reads PartitionIdChangeCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::Id); + } + case 21: { + LogStep(21, "DUT reads BetterPartitionAttachAttemptCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::Id); + } + case 22: { + LogStep(22, "DUT reads ParentChangeCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ParentChangeCount::Id); + } + case 23: { + LogStep(23, "DUT reads ActiveTimestamp attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::Id); + } + case 24: { + LogStep(24, "DUT reads PendingTimestamp attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0039"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::PendingTimestamp::Id); + } + case 25: { + LogStep(25, "DUT reads Delay attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Delay::Id); + } + case 26: { + LogStep(26, "DUT reads SecurityPolicy attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::SecurityPolicy::Id); + } + case 27: { + LogStep(27, "DUT reads ChannelPage0Mask attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::Id); + } + case 28: { + LogStep(28, "DUT reads OperationalDatasetComponents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::Id); + } + case 29: { + LogStep(29, "DUT reads ActiveNetworkFaults attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_DRLK_3_1_SimulatedSuite() : TestCommand("Test_TC_DRLK_3_1_Simulated", 37) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DRLK_3_1_SimulatedSuite() {} + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads LockState attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockState::Id); + } + case 2: { + LogStep(2, "DUT reads LockType attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockType::Id); + } + case 3: { + LogStep(3, "DUT reads ActuatorEnabled attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ActuatorEnabled::Id); + } + case 4: { + LogStep(4, "DUT reads DoorState attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorState::Id); + } + case 5: { + LogStep(5, "DUT reads DoorOpenEvents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorOpenEvents::Id); + } + case 6: { + LogStep(6, "DUT reads DoorClosedEvents attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorClosedEvents::Id); + } + case 7: { + LogStep(7, "DUT reads OpenPeriod attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OpenPeriod::Id); + } + case 8: { + LogStep(8, "DUT reads NumberOfTotalUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfTotalUsersSupported::Id); + } + case 9: { + LogStep(9, "DUT reads NumberofPINUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfPINUsersSupported::Id); + } + case 10: { + LogStep(10, "DUT reads NumberofRFIDUsersSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfRFIDUsersSupported::Id); + } + case 11: { + LogStep(11, "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::Id); + } + case 12: { + LogStep(12, "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id); + } + case 13: { + LogStep(13, "DUT reads NumberofHolidaySchedulesSupported attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfHolidaySchedulesSupported::Id); + } + case 14: { + LogStep(14, "DUT reads MaxPINCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxPINCodeLength::Id); + } + case 15: { + LogStep(15, "DUT reads MinPINCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinPINCodeLength::Id); + } + case 16: { + LogStep(16, "DUT reads MaxRFIDCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxRFIDCodeLength::Id); + } + case 17: { + LogStep(17, "DUT reads MinRFIDCodeLength attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinRFIDCodeLength::Id); + } + case 18: { + LogStep(18, "DUT reads CredentialRulesSupport attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::CredentialRulesSupport::Id); + } + case 19: { + LogStep(19, "DUT reads Language attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::Language::Id); + } + case 20: { + LogStep(20, "DUT reads LEDSettings attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LEDSettings::Id); + } + case 21: { + LogStep(21, "DUT reads AutoRelockTime attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id); + } + case 22: { + LogStep(22, "DUT reads SoundVolume attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SoundVolume::Id); + } + case 23: { + LogStep(23, "DUT reads OperatingMode attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OperatingMode::Id); + } + case 24: { + LogStep(24, "DUT reads SupportedOperatingModes attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SupportedOperatingModes::Id); + } + case 25: { + LogStep(25, "DUT reads DefaultConfigurationRegister attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DefaultConfigurationRegister::Id); + } + case 26: { + LogStep(26, "DUT reads EnableLocalProgramming attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableLocalProgramming::Id); + } + case 27: { + LogStep(27, "DUT reads EnableOneTouchLocking attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableOneTouchLocking::Id); + } + case 28: { + LogStep(28, "DUT reads EnableInsideStatusLED attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableInsideStatusLED::Id); + } + case 29: { + LogStep(29, "DUT reads EnablePrivacyModeButton attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnablePrivacyModeButton::Id); + } + case 30: { + LogStep(30, "DUT reads LocalProgrammingFeatures attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LocalProgrammingFeatures::Id); + } + case 31: { + LogStep(31, "DUT reads WrongCodeEntryLimit attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::WrongCodeEntryLimit::Id); + } + case 32: { + LogStep(32, "DUT reads UserCodeTemporaryDisableTime attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::UserCodeTemporaryDisableTime::Id); + } + case 33: { + LogStep(33, "DUT reads SendPINOverTheAir attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SendPINOverTheAir::Id); + } + case 34: { + LogStep(34, "DUT reads RequirePINForRemoteOperation attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::RequirePINforRemoteOperation::Id); + } + case 35: { + LogStep(35, "DUT reads ExpiringUserTimeOut attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ExpiringUserTimeout::Id); + } + case 36: { + LogStep(36, "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH"); + VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +std::unique_ptr GetTestCommand(std::string testName) +{ + if (testName == "Test_TC_BINFO_2_3_Simulated") + { + return std::unique_ptr(new Test_TC_BINFO_2_3_SimulatedSuite()); + } + if (testName == "Test_TC_ACT_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_BOOL_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DESC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_DGETH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DGSW_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DGWIFI_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_FLW_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_G_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_I_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_PRS_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_PSCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_RH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_SWTCH_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_WNCV_5_1_Simulated") + { + return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); + } + if (testName == "Test_TC_LCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_1_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_2_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_2_Simulated") { return std::unique_ptr(new Test_TC_OCC_2_2_SimulatedSuite()); } @@ -5400,6 +5957,18 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_TMP_3_1_SimulatedSuite()); } + if (testName == "Test_TC_CC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_CC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_DGTHREAD_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DGTHREAD_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_DRLK_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_DRLK_3_1_SimulatedSuite()); + } return nullptr; } @@ -5418,7 +5987,6 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_G_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_I_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PRS_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PS_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PSCFG_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_RH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_SWTCH_3_1_Simulated"); @@ -5452,4 +6020,7 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_TSUIC_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_PCC_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_TMP_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_CC_2_2_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_DRLK_3_1_Simulated"); }