diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 367ceff0c3ed67..e9df098060026f 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -898,6 +898,7 @@ server cluster DoorLock = 257 { kDuplicate = 2; kOccupied = 3; kInvalidField = 133; + kResourceExhausted = 137; kNotFound = 139; } @@ -1179,6 +1180,7 @@ server cluster DoorLock = 257 { readonly attribute int8u maxRFIDCodeLength = 25; readonly attribute int8u minRFIDCodeLength = 26; readonly attribute DlCredentialRuleMask credentialRulesSupport = 27; + readonly attribute int8u numberOfCredentialsSupportedPerUser = 28; attribute access(write: manage) char_string<3> language = 33; attribute access(write: manage) int32u autoRelockTime = 35; attribute access(write: manage) int8u soundVolume = 36; @@ -1296,7 +1298,9 @@ server cluster DoorLock = 257 { response struct GetCredentialStatusResponse = 37 { boolean credentialExists = 0; nullable INT16U userIndex = 1; - nullable INT16U nextCredentialIndex = 2; + nullable fabric_idx creatorFabricIndex = 2; + nullable fabric_idx lastModifiedFabricIndex = 3; + nullable INT16U nextCredentialIndex = 4; } timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; @@ -4199,6 +4203,7 @@ endpoint 1 { ram attribute maxRFIDCodeLength default = 20; ram attribute minRFIDCodeLength default = 10; ram attribute credentialRulesSupport default = 1; + ram attribute numberOfCredentialsSupportedPerUser default = 5; ram attribute language default = "en"; ram attribute autoRelockTime default = 60; ram attribute soundVolume; diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 89bed1a4e8c8b2..0301e7f91012e7 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -75,6 +75,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -110,6 +111,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -125,6 +127,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -140,6 +143,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -215,6 +219,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -274,6 +279,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -289,6 +295,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -372,6 +379,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -447,6 +455,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -462,6 +471,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -477,6 +487,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -492,6 +503,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -507,6 +519,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -522,6 +535,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -573,6 +587,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -599,6 +614,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -614,6 +630,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -705,6 +722,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -731,6 +749,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -746,6 +765,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -772,6 +792,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -798,6 +819,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -813,6 +835,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -828,6 +851,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -843,6 +867,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -858,6 +883,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -884,6 +910,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -910,6 +937,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -925,6 +953,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -961,6 +990,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -976,6 +1006,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -991,6 +1022,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1006,6 +1038,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1021,6 +1054,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1036,6 +1070,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1062,6 +1097,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1088,6 +1124,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1103,6 +1140,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1118,6 +1156,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "External", "singleton": 1, @@ -1133,6 +1172,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1148,6 +1188,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1163,6 +1204,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -1178,6 +1220,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1193,6 +1236,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1208,6 +1252,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1223,6 +1268,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1238,6 +1284,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1253,6 +1300,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1268,6 +1316,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1283,6 +1332,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1298,6 +1348,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1313,6 +1364,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1328,6 +1380,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -1343,6 +1396,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1358,6 +1412,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1373,6 +1428,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "CapabilityMinimaStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -1388,6 +1444,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1439,6 +1496,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1482,6 +1540,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -1497,6 +1556,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -1512,6 +1572,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1547,6 +1608,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1573,6 +1635,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1588,6 +1651,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1603,6 +1667,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "OTAUpdateStateEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1618,6 +1683,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1633,6 +1699,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -1648,6 +1715,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -1663,6 +1731,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1699,6 +1768,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1714,6 +1784,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1729,6 +1800,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1765,6 +1837,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "HourFormat", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1780,6 +1853,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "CalendarType", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1795,6 +1869,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1810,6 +1885,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1846,6 +1922,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "TempUnit", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1861,6 +1938,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1876,6 +1954,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1912,6 +1991,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1927,6 +2007,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1963,6 +2044,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1978,6 +2060,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1993,6 +2076,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2008,12 +2092,13 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2023,12 +2108,13 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2038,12 +2124,13 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2053,12 +2140,13 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2068,12 +2156,13 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2083,12 +2172,13 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2098,12 +2188,13 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2113,12 +2204,13 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2128,12 +2220,13 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2143,12 +2236,13 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2158,12 +2252,13 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2173,6 +2268,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2188,6 +2284,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2203,6 +2300,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2218,12 +2316,13 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2233,12 +2332,13 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2248,12 +2348,13 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2263,12 +2364,13 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2278,12 +2380,13 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2293,12 +2396,13 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2308,12 +2412,13 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2323,12 +2428,13 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2338,12 +2444,13 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2353,12 +2460,13 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2368,12 +2476,13 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2383,12 +2492,13 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2398,12 +2508,13 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2413,12 +2524,13 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2428,12 +2540,13 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2443,12 +2556,13 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2458,12 +2572,13 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -2473,6 +2588,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2488,6 +2604,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2539,6 +2656,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2590,6 +2708,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2605,6 +2724,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "BasicCommissioningInfo", "included": 1, "storageOption": "External", "singleton": 0, @@ -2620,6 +2740,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "RegulatoryLocationType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2635,6 +2756,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "RegulatoryLocationType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2650,6 +2772,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -2665,6 +2788,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2680,6 +2804,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2755,6 +2880,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2806,6 +2932,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2821,6 +2948,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2836,6 +2964,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2851,6 +2980,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2866,6 +2996,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2881,6 +3012,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "NetworkCommissioningStatus", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2896,6 +3028,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2911,6 +3044,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2926,6 +3060,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -2941,6 +3076,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2956,6 +3092,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3001,6 +3138,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3027,6 +3165,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3042,6 +3181,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3057,6 +3197,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3072,6 +3213,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3087,6 +3229,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "External", "singleton": 0, @@ -3102,6 +3245,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3117,6 +3261,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3132,6 +3277,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3147,6 +3293,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3182,6 +3329,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3208,6 +3356,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3223,6 +3372,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3238,6 +3388,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3253,6 +3404,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3268,6 +3420,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3283,6 +3436,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3328,6 +3482,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3343,6 +3498,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3358,6 +3514,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3373,6 +3530,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3388,6 +3546,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3403,6 +3562,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3418,6 +3578,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3433,6 +3594,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3448,6 +3610,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3463,6 +3626,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3478,6 +3642,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3493,6 +3658,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3508,6 +3674,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3523,6 +3690,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3538,6 +3706,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3553,6 +3722,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3568,6 +3738,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3583,6 +3754,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3598,6 +3770,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3613,6 +3786,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3628,6 +3802,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3643,6 +3818,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3658,6 +3834,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3673,6 +3850,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3688,6 +3866,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3703,6 +3882,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3718,6 +3898,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3733,6 +3914,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3748,6 +3930,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3763,6 +3946,7 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3778,6 +3962,7 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3793,6 +3978,7 @@ "code": 31, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3808,6 +3994,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3823,6 +4010,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3838,6 +4026,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3853,6 +4042,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3868,6 +4058,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3883,6 +4074,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3898,6 +4090,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3913,6 +4106,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3928,6 +4122,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3943,6 +4138,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3958,6 +4154,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3973,6 +4170,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3988,6 +4186,7 @@ "code": 44, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4003,6 +4202,7 @@ "code": 45, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4018,6 +4218,7 @@ "code": 46, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4033,6 +4234,7 @@ "code": 47, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4048,6 +4250,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4063,6 +4266,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4078,6 +4282,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4093,6 +4298,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4108,6 +4314,7 @@ "code": 52, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4123,6 +4330,7 @@ "code": 53, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4138,6 +4346,7 @@ "code": 54, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4153,6 +4362,7 @@ "code": 55, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4168,6 +4378,7 @@ "code": 56, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4183,6 +4394,7 @@ "code": 57, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4198,6 +4410,7 @@ "code": 58, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4213,6 +4426,7 @@ "code": 59, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4228,6 +4442,7 @@ "code": 60, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4243,6 +4458,7 @@ "code": 61, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4258,6 +4474,7 @@ "code": 62, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4273,6 +4490,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4288,6 +4506,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4323,6 +4542,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4349,8 +4569,9 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4364,8 +4585,9 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "SecurityType", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4379,6 +4601,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "WiFiVersionType", "included": 1, "storageOption": "External", "singleton": 0, @@ -4394,6 +4617,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4409,6 +4633,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "External", "singleton": 0, @@ -4424,6 +4649,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4439,6 +4665,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4454,6 +4681,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4469,6 +4697,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4484,6 +4713,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4499,6 +4729,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4514,6 +4745,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4529,6 +4761,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4544,6 +4777,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4559,6 +4793,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4594,6 +4829,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4620,6 +4856,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "PHYRateType", "included": 1, "storageOption": "External", "singleton": 0, @@ -4635,6 +4872,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -4650,6 +4888,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4665,6 +4904,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4680,6 +4920,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4695,6 +4936,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4710,6 +4952,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4725,6 +4968,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -4740,6 +4984,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4755,6 +5000,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4770,6 +5016,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4796,6 +5043,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4822,6 +5070,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4837,6 +5086,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4852,6 +5102,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -4867,6 +5118,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4918,6 +5170,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4944,6 +5197,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4959,6 +5213,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "fabric_idx", "included": 1, "storageOption": "External", "singleton": 0, @@ -4974,6 +5229,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4989,6 +5245,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5088,6 +5345,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5147,6 +5405,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5162,6 +5421,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5177,6 +5437,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5192,6 +5453,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5207,6 +5469,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5222,6 +5485,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "fabric_idx", "included": 1, "storageOption": "External", "singleton": 0, @@ -5237,6 +5501,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5296,6 +5561,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5339,6 +5605,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5354,6 +5621,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5369,6 +5637,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -5384,6 +5653,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -5399,6 +5669,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5435,6 +5706,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5450,6 +5722,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5486,6 +5759,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5501,6 +5775,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5544,6 +5819,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5570,6 +5846,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "DlLockState", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5585,6 +5862,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "DlLockType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5600,6 +5878,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5615,6 +5894,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "DlDoorState", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5630,6 +5910,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5645,6 +5926,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5660,6 +5942,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5675,6 +5958,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5690,6 +5974,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5705,6 +5990,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "DlOperatingMode", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5720,6 +6006,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "DlDefaultConfigurationRegister", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5735,6 +6022,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5750,6 +6038,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5765,6 +6054,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5780,6 +6070,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5795,6 +6086,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5810,6 +6102,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5825,6 +6118,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5840,6 +6134,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5855,6 +6150,7 @@ "code": 64, "mfgCode": null, "side": "server", + "type": "DlAlarmMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5870,6 +6166,7 @@ "code": 65, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5885,6 +6182,7 @@ "code": 66, "mfgCode": null, "side": "server", + "type": "DlRemoteOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5900,6 +6198,7 @@ "code": 67, "mfgCode": null, "side": "server", + "type": "DlManualOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5915,6 +6214,7 @@ "code": 68, "mfgCode": null, "side": "server", + "type": "DlRFIDOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5930,6 +6230,7 @@ "code": 69, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5945,6 +6246,7 @@ "code": 70, "mfgCode": null, "side": "server", + "type": "DlRemoteProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5960,6 +6262,7 @@ "code": 71, "mfgCode": null, "side": "server", + "type": "DlRFIDProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -5975,6 +6278,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6018,6 +6322,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6044,6 +6349,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6059,6 +6365,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6074,6 +6381,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6089,6 +6397,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6104,6 +6413,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6243,6 +6553,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6269,6 +6580,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6284,6 +6596,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6299,6 +6612,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6314,6 +6628,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6329,6 +6644,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6344,6 +6660,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6359,6 +6676,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6374,6 +6692,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6389,6 +6708,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6404,6 +6724,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6419,6 +6740,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6434,6 +6756,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6449,6 +6772,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6464,6 +6788,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6479,6 +6804,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6494,6 +6820,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6509,6 +6836,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6524,6 +6852,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6539,6 +6868,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6554,6 +6884,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6569,6 +6900,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6584,6 +6916,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6599,6 +6932,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6614,6 +6948,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6629,6 +6964,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6644,6 +6980,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6659,6 +6996,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6674,6 +7012,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6689,6 +7028,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6704,6 +7044,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6719,6 +7060,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6734,6 +7076,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6749,6 +7092,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6764,6 +7108,7 @@ "code": 52, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6779,6 +7124,7 @@ "code": 54, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6794,6 +7140,7 @@ "code": 55, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6809,6 +7156,7 @@ "code": 56, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6824,6 +7172,7 @@ "code": 58, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6839,6 +7188,7 @@ "code": 59, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6854,6 +7204,7 @@ "code": 60, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6869,6 +7220,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6884,6 +7236,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6899,6 +7252,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6914,6 +7268,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6929,6 +7284,7 @@ "code": 16388, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6944,6 +7300,7 @@ "code": 16394, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6959,6 +7316,7 @@ "code": 16395, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6974,6 +7332,7 @@ "code": 16396, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6989,6 +7348,7 @@ "code": 16397, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7004,6 +7364,7 @@ "code": 16400, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7019,6 +7380,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7045,6 +7407,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7071,6 +7434,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7086,6 +7450,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7101,6 +7466,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7116,6 +7482,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7131,6 +7498,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7146,6 +7514,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7172,6 +7541,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7198,6 +7568,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7213,6 +7584,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7228,6 +7600,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7243,6 +7616,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7258,6 +7632,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7284,6 +7659,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7310,6 +7686,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7325,6 +7702,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7340,6 +7718,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7355,6 +7734,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7370,6 +7750,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7396,6 +7777,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7422,6 +7804,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7437,6 +7820,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7452,6 +7836,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7467,6 +7852,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7502,6 +7888,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7545,6 +7932,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7560,6 +7948,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7575,6 +7964,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7590,6 +7980,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "node_id", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7605,6 +7996,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7620,6 +8012,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7671,6 +8064,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7706,6 +8100,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7721,6 +8116,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "Bitmap8MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7736,6 +8132,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "Bitmap16MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7751,6 +8148,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "Bitmap32MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7766,6 +8164,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "Bitmap64MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7781,6 +8180,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7796,6 +8196,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7811,6 +8212,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7826,6 +8228,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7841,6 +8244,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7856,6 +8260,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7871,6 +8276,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7886,6 +8292,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int64s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7901,6 +8308,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7916,6 +8324,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7931,6 +8340,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7946,6 +8356,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -7961,6 +8372,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -7976,6 +8388,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -7991,6 +8404,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8050,6 +8464,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8085,6 +8500,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8100,6 +8516,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8115,6 +8532,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8190,6 +8608,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8249,6 +8668,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8264,6 +8684,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8347,6 +8768,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8422,6 +8844,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8437,6 +8860,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8452,6 +8876,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8467,6 +8892,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8482,6 +8908,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8497,6 +8924,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8572,6 +9000,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8598,6 +9027,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -8613,6 +9043,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8628,6 +9059,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8643,6 +9075,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8658,6 +9091,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "OnOffStartUpOnOff", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -8673,6 +9107,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -8688,6 +9123,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -8703,6 +9139,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -8718,6 +9155,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8733,6 +9171,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8759,6 +9198,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8785,6 +9225,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8800,6 +9241,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8815,6 +9257,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8906,6 +9349,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8932,6 +9376,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -8947,6 +9392,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8962,6 +9408,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8977,6 +9424,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -8992,6 +9440,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9007,6 +9456,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9022,6 +9472,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9037,6 +9488,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9052,6 +9504,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9067,6 +9520,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9082,6 +9536,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9097,6 +9552,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9112,6 +9568,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9127,6 +9584,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -9142,6 +9600,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9157,6 +9616,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9172,6 +9632,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9187,6 +9648,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9202,6 +9664,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9228,6 +9691,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9254,6 +9718,7 @@ "code": 81, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9269,6 +9734,7 @@ "code": 85, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9284,6 +9750,7 @@ "code": 111, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9299,6 +9766,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9325,6 +9793,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9351,6 +9820,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9366,6 +9836,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9381,6 +9852,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9396,6 +9868,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9411,6 +9884,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -9437,6 +9911,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9463,6 +9938,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9478,6 +9954,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9504,6 +9981,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -9530,6 +10008,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9545,6 +10024,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -9560,6 +10040,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 0, @@ -9575,6 +10056,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9590,6 +10072,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9605,6 +10088,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -9620,6 +10104,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -9635,6 +10120,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -9661,6 +10147,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -9687,6 +10174,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -9702,6 +10190,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9717,6 +10206,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "External", "singleton": 1, @@ -9732,6 +10222,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9747,6 +10238,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -9762,6 +10254,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -9777,6 +10270,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9792,6 +10286,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -9807,6 +10302,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9822,6 +10318,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 1, @@ -9837,6 +10334,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9852,6 +10350,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9867,6 +10366,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9882,6 +10382,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9897,6 +10398,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9912,6 +10414,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9927,6 +10430,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -9942,6 +10446,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -9957,6 +10462,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -9972,6 +10478,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "CapabilityMinimaStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -9987,6 +10494,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -10030,6 +10538,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10065,6 +10574,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10091,6 +10601,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10117,6 +10628,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10143,6 +10655,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10169,6 +10682,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10184,6 +10698,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10199,6 +10714,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10214,6 +10730,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10229,6 +10746,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10244,6 +10762,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10259,6 +10778,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10274,6 +10794,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10289,6 +10810,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10304,6 +10826,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10319,6 +10842,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10334,6 +10858,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10349,6 +10874,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10364,6 +10890,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10379,6 +10906,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10394,6 +10922,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10409,6 +10938,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10424,6 +10954,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10439,6 +10970,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10454,6 +10986,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10469,6 +11002,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10484,6 +11018,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10499,6 +11034,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10514,6 +11050,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10529,6 +11066,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10544,6 +11082,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10559,6 +11098,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10574,6 +11114,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10589,6 +11130,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10604,6 +11146,7 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -10619,6 +11162,7 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10634,6 +11178,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10649,6 +11194,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10664,6 +11210,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -10679,6 +11226,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10694,6 +11242,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10737,6 +11286,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10780,6 +11330,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10795,6 +11346,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "BasicCommissioningInfo", "included": 1, "storageOption": "External", "singleton": 0, @@ -10810,6 +11362,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -10825,6 +11378,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10900,6 +11454,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10951,6 +11506,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10966,6 +11522,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -10981,6 +11538,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -10996,6 +11554,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11011,6 +11570,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11026,6 +11586,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "NetworkCommissioningStatus", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11041,6 +11602,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11056,6 +11618,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11071,6 +11634,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11086,6 +11650,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11112,6 +11677,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11138,6 +11704,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11153,6 +11720,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11168,6 +11736,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11183,6 +11752,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11198,6 +11768,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11224,6 +11795,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11250,6 +11822,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11265,6 +11838,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11280,6 +11854,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11306,6 +11881,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11332,6 +11908,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11347,6 +11924,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11383,6 +11961,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11398,6 +11977,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11424,6 +12004,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11450,6 +12031,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11465,6 +12047,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11500,6 +12083,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11526,6 +12110,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11541,6 +12126,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11556,6 +12142,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11571,6 +12158,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -11586,6 +12174,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -11601,6 +12190,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -11616,6 +12206,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11631,6 +12222,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11646,6 +12238,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -11661,6 +12254,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11676,6 +12270,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11815,6 +12410,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11866,6 +12462,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "DlLockState", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11881,6 +12478,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "DlLockType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11896,6 +12494,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11911,6 +12510,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "DlDoorState", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11926,6 +12526,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11941,6 +12542,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11956,6 +12558,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11966,11 +12569,28 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "NumberOfLogRecordsSupported", + "code": 16, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 0, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "NumberOfTotalUsersSupported", "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -11986,6 +12606,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12001,6 +12622,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12016,6 +12638,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12031,6 +12654,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12046,6 +12670,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12061,6 +12686,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12076,6 +12702,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12091,6 +12718,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12106,6 +12734,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12121,6 +12750,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "DlCredentialRuleMask", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12131,11 +12761,28 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "NumberOfCredentialsSupportedPerUser", + "code": 28, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "5", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "EnableLogging", "code": 32, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12151,6 +12798,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12166,6 +12814,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12181,6 +12830,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12196,6 +12846,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12211,6 +12862,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "DlOperatingMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12226,6 +12878,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "DlSupportedOperatingModes", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12241,6 +12894,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "DlDefaultConfigurationRegister", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12256,6 +12910,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12271,6 +12926,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12286,6 +12942,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12301,6 +12958,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12316,6 +12974,7 @@ "code": 44, "mfgCode": null, "side": "server", + "type": "DlLocalProgrammingFeatures", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12331,6 +12990,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12346,6 +13006,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12361,6 +13022,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12376,6 +13038,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12391,6 +13054,7 @@ "code": 53, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12406,6 +13070,7 @@ "code": 64, "mfgCode": null, "side": "server", + "type": "DlAlarmMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12421,6 +13086,7 @@ "code": 65, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12436,6 +13102,7 @@ "code": 66, "mfgCode": null, "side": "server", + "type": "DlRemoteOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12451,6 +13118,7 @@ "code": 67, "mfgCode": null, "side": "server", + "type": "DlManualOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12466,6 +13134,7 @@ "code": 68, "mfgCode": null, "side": "server", + "type": "DlRFIDOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12481,6 +13150,7 @@ "code": 69, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12496,6 +13166,7 @@ "code": 70, "mfgCode": null, "side": "server", + "type": "DlRemoteProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12511,6 +13182,7 @@ "code": 71, "mfgCode": null, "side": "server", + "type": "DlRFIDProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -12521,11 +13193,44 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -12541,6 +13246,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12556,6 +13262,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12639,6 +13346,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12665,6 +13373,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "Type", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12680,6 +13389,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12695,6 +13405,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12710,6 +13421,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "ConfigStatus", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12725,6 +13437,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "Percent", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12740,6 +13453,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "Percent", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12755,6 +13469,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12770,6 +13485,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "Percent100ths", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12785,6 +13501,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "Percent100ths", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12800,6 +13517,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "EndProductType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12815,6 +13533,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "Percent100ths", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12830,6 +13549,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "Percent100ths", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12845,6 +13565,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12860,6 +13581,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12875,6 +13597,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12890,6 +13613,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12905,6 +13629,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "Mode", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -12920,6 +13645,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12935,6 +13661,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12950,6 +13677,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12993,6 +13721,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13019,6 +13748,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13034,6 +13764,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13049,6 +13780,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13064,6 +13796,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13079,6 +13812,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13105,6 +13839,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13131,6 +13866,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13146,6 +13882,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13161,6 +13898,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13176,6 +13914,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13191,6 +13930,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13206,6 +13946,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13221,6 +13962,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13236,6 +13978,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13251,6 +13994,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13266,6 +14010,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13281,6 +14026,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13296,6 +14042,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13311,6 +14058,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13326,6 +14074,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13341,6 +14090,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "PumpOperationMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13356,6 +14106,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "PumpControlMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13371,6 +14122,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13386,6 +14138,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13401,6 +14154,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int24u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13416,6 +14170,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int24u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13431,6 +14186,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13446,6 +14202,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "PumpOperationMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13461,6 +14218,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "PumpControlMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13476,6 +14234,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13491,6 +14250,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13506,6 +14266,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13573,6 +14334,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13616,6 +14378,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13631,6 +14394,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13646,6 +14410,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13661,6 +14426,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13676,6 +14442,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13691,6 +14458,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -13706,6 +14474,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -13721,6 +14490,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13736,6 +14506,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13751,6 +14522,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13766,6 +14538,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13781,6 +14554,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13796,6 +14570,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13811,6 +14586,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13826,6 +14602,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "ThermostatControlSequence", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13841,6 +14618,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13856,6 +14634,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13871,6 +14650,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13886,6 +14666,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13901,6 +14682,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -13916,6 +14698,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13931,6 +14714,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13967,6 +14751,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "FanModeType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13982,6 +14767,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "FanModeSequenceType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -13997,6 +14783,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14012,6 +14799,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14027,6 +14815,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14042,6 +14831,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14057,6 +14847,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14072,6 +14863,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14087,6 +14879,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14102,6 +14895,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14117,6 +14911,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14132,6 +14927,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -14147,6 +14943,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -14162,6 +14959,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -14177,6 +14975,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14192,6 +14991,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14218,6 +15018,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14244,6 +15045,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14259,6 +15061,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14274,6 +15077,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14289,6 +15093,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14468,6 +15273,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14494,6 +15300,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14509,6 +15316,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14524,6 +15332,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14539,6 +15348,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14554,6 +15364,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14569,6 +15380,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14584,6 +15396,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14599,6 +15412,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14614,6 +15428,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14629,6 +15444,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14644,6 +15460,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14659,6 +15476,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14674,6 +15492,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14689,6 +15508,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14704,6 +15524,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14719,6 +15540,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14734,6 +15556,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14749,6 +15572,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14764,6 +15588,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14779,6 +15604,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14794,6 +15620,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14809,6 +15636,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14824,6 +15652,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14839,6 +15668,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14854,6 +15684,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14869,6 +15700,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14884,6 +15716,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14899,6 +15732,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14914,6 +15748,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14929,6 +15764,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14944,6 +15780,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14959,6 +15796,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14974,6 +15812,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -14989,6 +15828,7 @@ "code": 52, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15004,6 +15844,7 @@ "code": 54, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15019,6 +15860,7 @@ "code": 55, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15034,6 +15876,7 @@ "code": 56, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15049,6 +15892,7 @@ "code": 58, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15064,6 +15908,7 @@ "code": 59, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15079,6 +15924,7 @@ "code": 60, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15094,6 +15940,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15109,6 +15956,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15124,6 +15972,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15139,6 +15988,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15154,6 +16004,7 @@ "code": 16388, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15169,6 +16020,7 @@ "code": 16389, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15184,6 +16036,7 @@ "code": 16390, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15199,6 +16052,7 @@ "code": 16394, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15214,6 +16068,7 @@ "code": 16395, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15229,6 +16084,7 @@ "code": 16396, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15244,6 +16100,7 @@ "code": 16397, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15259,6 +16116,7 @@ "code": 16400, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15274,6 +16132,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15289,6 +16148,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15315,6 +16175,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15341,6 +16202,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15356,6 +16218,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15371,6 +16234,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15386,6 +16250,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15401,6 +16266,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15416,6 +16282,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15442,6 +16309,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15468,6 +16336,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15483,6 +16352,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15498,6 +16368,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15513,6 +16384,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15528,6 +16400,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15554,6 +16427,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15580,6 +16454,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15595,6 +16470,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15610,6 +16486,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15625,6 +16502,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -15640,6 +16518,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16s", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -15655,6 +16534,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -15670,6 +16550,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15696,6 +16577,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15722,6 +16604,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15737,6 +16620,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15752,6 +16636,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15767,6 +16652,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15782,6 +16668,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15808,6 +16695,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15834,6 +16722,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15849,6 +16738,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15864,6 +16754,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15879,6 +16770,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15894,6 +16786,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15920,6 +16813,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15946,6 +16840,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15961,6 +16856,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15976,6 +16872,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -15991,6 +16888,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16026,6 +16924,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16069,6 +16968,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16084,6 +16984,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16099,6 +17000,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16114,6 +17016,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "node_id", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16129,6 +17032,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16144,6 +17048,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16170,6 +17075,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16196,6 +17102,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16211,6 +17118,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16226,6 +17134,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16241,6 +17150,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16256,6 +17166,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -16271,6 +17182,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16314,6 +17226,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16340,6 +17253,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -16355,6 +17269,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "LineupInfo", "included": 0, "storageOption": "External", "singleton": 0, @@ -16370,6 +17285,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "ChannelInfo", "included": 0, "storageOption": "External", "singleton": 0, @@ -16385,6 +17301,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16400,6 +17317,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -16415,6 +17333,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16450,6 +17369,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16476,6 +17396,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -16491,6 +17412,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16506,6 +17428,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16521,6 +17444,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -16536,6 +17460,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16643,6 +17568,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16669,6 +17595,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "PlaybackStateEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16684,6 +17611,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "epoch_us", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16699,6 +17627,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16714,6 +17643,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "PlaybackPosition", "included": 0, "storageOption": "External", "singleton": 0, @@ -16729,6 +17659,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "single", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16744,6 +17675,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16759,6 +17691,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16774,6 +17707,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16789,6 +17723,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -16804,6 +17739,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16863,6 +17799,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16889,6 +17826,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -16904,6 +17842,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16919,6 +17858,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -16934,6 +17874,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -16949,6 +17890,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -16984,6 +17926,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17010,6 +17953,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17045,6 +17989,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17071,6 +18016,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17114,6 +18060,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17140,6 +18087,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -17155,6 +18103,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17170,6 +18119,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17213,6 +18163,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17239,6 +18190,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -17254,6 +18206,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17269,6 +18222,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17304,6 +18258,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17330,6 +18285,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -17345,6 +18301,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "ApplicationEP", "included": 0, "storageOption": "External", "singleton": 0, @@ -17360,6 +18317,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17386,6 +18344,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17412,6 +18371,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17427,6 +18387,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17442,6 +18403,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17457,6 +18419,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17472,6 +18435,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "ApplicationStatusEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17487,6 +18451,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17502,6 +18467,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -17517,6 +18483,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17552,6 +18519,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17578,6 +18546,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17749,6 +18718,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17840,6 +18810,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17855,6 +18826,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "Bitmap8MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17870,6 +18842,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "Bitmap16MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17885,6 +18858,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "Bitmap32MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17900,6 +18874,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "Bitmap64MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17915,6 +18890,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17930,6 +18906,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17945,6 +18922,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int24u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17960,6 +18938,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17975,6 +18954,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int40u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -17990,6 +18970,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int48u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18005,6 +18986,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int56u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18020,6 +19002,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18035,6 +19018,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18050,6 +19034,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18065,6 +19050,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "int24s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18080,6 +19066,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18095,6 +19082,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int40s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18110,6 +19098,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int48s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18125,6 +19114,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int56s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18140,6 +19130,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int64s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18155,6 +19146,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18170,6 +19162,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18185,6 +19178,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "single", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18200,6 +19194,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "double", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18215,6 +19210,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18230,6 +19226,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18245,6 +19242,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18260,6 +19258,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18275,6 +19274,7 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "long_octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18290,6 +19290,7 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18305,6 +19306,7 @@ "code": 31, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18320,6 +19322,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "epoch_us", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18335,6 +19338,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "epoch_s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18350,6 +19354,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18365,6 +19370,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18380,6 +19386,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "SimpleEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18395,6 +19402,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "SimpleStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -18410,6 +19418,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18425,6 +19434,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18440,6 +19450,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18455,6 +19466,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18470,6 +19482,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18485,6 +19498,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -18500,6 +19514,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18515,6 +19530,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -18530,6 +19546,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -18545,6 +19562,7 @@ "code": 255, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -18560,6 +19578,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18575,6 +19594,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "Bitmap8MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18590,6 +19610,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "Bitmap16MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18605,6 +19626,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "Bitmap32MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18620,6 +19642,7 @@ "code": 16388, "mfgCode": null, "side": "server", + "type": "Bitmap64MaskMap", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18635,6 +19658,7 @@ "code": 16389, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18650,6 +19674,7 @@ "code": 16390, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18665,6 +19690,7 @@ "code": 16391, "mfgCode": null, "side": "server", + "type": "int24u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18680,6 +19706,7 @@ "code": 16392, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18695,6 +19722,7 @@ "code": 16393, "mfgCode": null, "side": "server", + "type": "int40u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18710,6 +19738,7 @@ "code": 16394, "mfgCode": null, "side": "server", + "type": "int48u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18725,6 +19754,7 @@ "code": 16395, "mfgCode": null, "side": "server", + "type": "int56u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18740,6 +19770,7 @@ "code": 16396, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18755,6 +19786,7 @@ "code": 16397, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18770,6 +19802,7 @@ "code": 16398, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18785,6 +19818,7 @@ "code": 16399, "mfgCode": null, "side": "server", + "type": "int24s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18800,6 +19834,7 @@ "code": 16400, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18815,6 +19850,7 @@ "code": 16401, "mfgCode": null, "side": "server", + "type": "int40s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18830,6 +19866,7 @@ "code": 16402, "mfgCode": null, "side": "server", + "type": "int48s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18845,6 +19882,7 @@ "code": 16403, "mfgCode": null, "side": "server", + "type": "int56s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18860,6 +19898,7 @@ "code": 16404, "mfgCode": null, "side": "server", + "type": "int64s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18875,6 +19914,7 @@ "code": 16405, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18890,6 +19930,7 @@ "code": 16406, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18905,6 +19946,7 @@ "code": 16407, "mfgCode": null, "side": "server", + "type": "single", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18920,6 +19962,7 @@ "code": 16408, "mfgCode": null, "side": "server", + "type": "double", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18935,6 +19978,7 @@ "code": 16409, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18950,6 +19994,7 @@ "code": 16414, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18965,6 +20010,7 @@ "code": 16420, "mfgCode": null, "side": "server", + "type": "SimpleEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -18980,6 +20026,7 @@ "code": 16421, "mfgCode": null, "side": "server", + "type": "SimpleStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -18995,6 +20042,7 @@ "code": 16422, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19010,6 +20058,7 @@ "code": 16423, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19025,6 +20074,7 @@ "code": 16424, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19040,6 +20090,7 @@ "code": 16425, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19055,6 +20106,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -19070,6 +20122,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -19085,6 +20138,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19111,6 +20165,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19137,6 +20192,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19152,6 +20208,7 @@ "code": 772, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19167,6 +20224,7 @@ "code": 1285, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19182,6 +20240,7 @@ "code": 1286, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19197,6 +20256,7 @@ "code": 1287, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19212,6 +20272,7 @@ "code": 1288, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19227,6 +20288,7 @@ "code": 1289, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19242,6 +20304,7 @@ "code": 1290, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19257,6 +20320,7 @@ "code": 1291, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19272,6 +20336,7 @@ "code": 1292, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19287,6 +20352,7 @@ "code": 1293, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19302,6 +20368,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19353,6 +20420,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19388,6 +20456,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19403,6 +20472,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19478,6 +20548,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19537,6 +20608,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19552,6 +20624,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19635,6 +20708,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19710,6 +20784,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19725,6 +20800,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19740,6 +20816,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19755,6 +20832,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19770,6 +20848,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19785,6 +20864,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19836,6 +20916,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19862,6 +20943,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19877,6 +20959,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19892,6 +20975,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19907,6 +20991,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19922,6 +21007,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "OnOffStartUpOnOff", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19937,6 +21023,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -19952,6 +21039,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20043,6 +21131,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20069,6 +21158,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20084,6 +21174,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20110,6 +21201,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20136,6 +21228,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -20151,6 +21244,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -20166,6 +21260,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -20181,6 +21276,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -20196,6 +21292,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -20222,6 +21319,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -20248,6 +21346,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -20263,6 +21362,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20278,6 +21378,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "External", "singleton": 1, @@ -20293,6 +21394,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20308,6 +21410,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -20323,6 +21426,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -20338,6 +21442,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20353,6 +21458,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -20368,6 +21474,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20383,6 +21490,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 1, @@ -20398,6 +21506,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20413,6 +21522,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20428,6 +21538,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20443,6 +21554,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20458,6 +21570,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20473,6 +21586,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20488,6 +21602,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -20503,6 +21618,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -20518,6 +21634,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -20533,6 +21650,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "CapabilityMinimaStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -20548,6 +21666,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -20584,6 +21703,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20599,6 +21719,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20614,6 +21735,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20629,6 +21751,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20644,6 +21767,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20659,6 +21783,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20674,6 +21799,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20689,6 +21815,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20704,6 +21831,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20719,6 +21847,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20734,6 +21863,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -20749,6 +21879,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20764,6 +21895,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20779,6 +21911,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20794,6 +21927,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20809,6 +21943,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20824,6 +21959,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -20839,6 +21975,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20854,6 +21991,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -20869,6 +22007,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20884,6 +22023,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20899,6 +22039,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20914,6 +22055,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20929,6 +22071,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20944,6 +22087,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20959,6 +22103,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20974,6 +22119,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "enum8", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -20989,6 +22135,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21004,6 +22151,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21019,6 +22167,7 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21034,6 +22183,7 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -21049,6 +22199,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -21064,6 +22215,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -21079,6 +22231,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -21094,6 +22247,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21109,6 +22263,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21152,6 +22307,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21178,6 +22334,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "DlLockState", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21193,6 +22350,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "DlLockType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21208,6 +22366,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21223,6 +22382,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "DlDoorState", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21238,6 +22398,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21253,6 +22414,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "char_string", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21268,6 +22430,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21283,6 +22446,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21298,6 +22462,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21313,6 +22478,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "DlOperatingMode", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21328,6 +22494,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "DlDefaultConfigurationRegister", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21343,6 +22510,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21358,6 +22526,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21373,6 +22542,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21388,6 +22558,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21403,6 +22574,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21418,6 +22590,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21433,6 +22606,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21448,6 +22622,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21463,6 +22638,7 @@ "code": 64, "mfgCode": null, "side": "server", + "type": "DlAlarmMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21478,6 +22654,7 @@ "code": 65, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21493,6 +22670,7 @@ "code": 66, "mfgCode": null, "side": "server", + "type": "DlRemoteOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21508,6 +22686,7 @@ "code": 67, "mfgCode": null, "side": "server", + "type": "DlManualOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21523,6 +22702,7 @@ "code": 68, "mfgCode": null, "side": "server", + "type": "DlRFIDOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21538,6 +22718,7 @@ "code": 69, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21553,6 +22734,7 @@ "code": 70, "mfgCode": null, "side": "server", + "type": "DlRemoteProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21568,6 +22750,7 @@ "code": 71, "mfgCode": null, "side": "server", + "type": "DlRFIDProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -21583,6 +22766,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21626,6 +22810,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21652,6 +22837,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21667,6 +22853,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21682,6 +22869,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21697,6 +22885,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21712,6 +22901,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21851,6 +23041,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21877,6 +23068,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21892,6 +23084,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21907,6 +23100,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21922,6 +23116,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21937,6 +23132,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21952,6 +23148,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21967,6 +23164,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21982,6 +23180,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -21997,6 +23196,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22012,6 +23212,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22027,6 +23228,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22042,6 +23244,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22057,6 +23260,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22072,6 +23276,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22087,6 +23292,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22102,6 +23308,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22117,6 +23324,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22132,6 +23340,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22147,6 +23356,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22162,6 +23372,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22177,6 +23388,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22192,6 +23404,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22207,6 +23420,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22222,6 +23436,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22237,6 +23452,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22252,6 +23468,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22267,6 +23484,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22282,6 +23500,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22297,6 +23516,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22312,6 +23532,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22327,6 +23548,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22342,6 +23564,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22357,6 +23580,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22372,6 +23596,7 @@ "code": 52, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22387,6 +23612,7 @@ "code": 54, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22402,6 +23628,7 @@ "code": 55, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22417,6 +23644,7 @@ "code": 56, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22432,6 +23660,7 @@ "code": 58, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22447,6 +23676,7 @@ "code": 59, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22462,6 +23692,7 @@ "code": 60, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22477,6 +23708,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22492,6 +23724,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22507,6 +23740,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22522,6 +23756,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22537,6 +23772,7 @@ "code": 16388, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22552,6 +23788,7 @@ "code": 16394, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22567,6 +23804,7 @@ "code": 16395, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22582,6 +23820,7 @@ "code": 16396, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22597,6 +23836,7 @@ "code": 16397, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22612,6 +23852,7 @@ "code": 16400, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22627,6 +23868,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22653,6 +23895,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22679,6 +23922,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22694,6 +23938,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22709,6 +23954,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22724,6 +23970,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -22739,6 +23986,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22765,6 +24013,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22791,6 +24040,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22806,6 +24056,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22821,6 +24072,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22836,6 +24088,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22871,6 +24124,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22914,6 +24168,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22929,6 +24184,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22944,6 +24200,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap16", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22959,6 +24216,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "node_id", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22974,6 +24232,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -22989,6 +24248,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -23072,6 +24332,7 @@ "code": 65532, "mfgCode": null, "side": "client", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -23087,6 +24348,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -23138,6 +24400,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "External", "singleton": 0, @@ -23153,6 +24416,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -23168,6 +24432,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "External", "singleton": 0, @@ -23183,6 +24448,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "External", "singleton": 0, @@ -23198,6 +24464,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -23213,6 +24480,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "NetworkCommissioningStatus", "included": 1, "storageOption": "External", "singleton": 0, @@ -23228,6 +24496,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "External", "singleton": 0, @@ -23243,6 +24512,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "External", "singleton": 0, @@ -23258,6 +24528,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -23273,6 +24544,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -23288,6 +24560,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -23303,6 +24576,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "External", "singleton": 0, @@ -23318,6 +24592,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -23370,5 +24645,6 @@ "endpointVersion": 1, "deviceIdentifier": 61442 } - ] + ], + "log": [] } \ No newline at end of file diff --git a/examples/lock-app/efr32/include/AppTask.h b/examples/lock-app/efr32/include/AppTask.h index 67803623f2fbc8..7dab19d18c0728 100644 --- a/examples/lock-app/efr32/include/AppTask.h +++ b/examples/lock-app/efr32/include/AppTask.h @@ -38,6 +38,7 @@ #define APP_ERROR_CREATE_TIMER_FAILED CHIP_APPLICATION_ERROR(0x04) #define APP_ERROR_START_TIMER_FAILED CHIP_APPLICATION_ERROR(0x05) #define APP_ERROR_STOP_TIMER_FAILED CHIP_APPLICATION_ERROR(0x06) +#define APP_ERROR_ALLOCATION_FAILED CHIP_APPLICATION_ERROR(0x07) class AppTask { diff --git a/examples/lock-app/efr32/include/LockManager.h b/examples/lock-app/efr32/include/LockManager.h index dad3c119884b18..ba2deb7007ce04 100644 --- a/examples/lock-app/efr32/include/LockManager.h +++ b/examples/lock-app/efr32/include/LockManager.h @@ -54,7 +54,8 @@ class LockManager kState_UnlockCompleted, } State; - CHIP_ERROR Init(chip::app::DataModel::Nullable state); + CHIP_ERROR Init(chip::app::DataModel::Nullable state, + uint8_t maxNumberOfCredentialsPerUser); bool NextState(); bool IsActionInProgress(); bool InitiateAction(int32_t aActor, Action_t aAction); @@ -103,7 +104,8 @@ class LockManager char mUserName[DOOR_LOCK_MAX_USER_NAME_SIZE]; uint8_t mCredentialData[DOOR_LOCK_MAX_CREDENTIAL_SIZE]; - DlCredential mCredentials[DOOR_LOCK_MAX_CREDENTIALS_PER_USER]; + chip::Platform::ScopedMemoryBuffer mCredentials; + uint8_t mMaxCredentialsPerUser; static LockManager sLock; }; diff --git a/examples/lock-app/efr32/src/AppTask.cpp b/examples/lock-app/efr32/src/AppTask.cpp index 1f593f41322ab2..066d5704111bb1 100644 --- a/examples/lock-app/efr32/src/AppTask.cpp +++ b/examples/lock-app/efr32/src/AppTask.cpp @@ -235,7 +235,17 @@ CHIP_ERROR AppTask::Init() chip::app::Clusters::DoorLock::Attributes::LockState::Get(endpointId, state); chip::DeviceLayer::PlatformMgr().UnlockChipStack(); - err = LockMgr().Init(state); + uint8_t maxCredentialsPerUser = 0; + if (!DoorLockServer::Instance().GetNumberOfCredentialsSupportedPerUser(endpointId, maxCredentialsPerUser)) + { + ChipLogError(Zcl, + "Unable to get number of credentials supported per user when initializing lock endpoint, defaulting to 5 " + "[endpointId=%d]", + endpointId); + maxCredentialsPerUser = 5; + } + + err = LockMgr().Init(state, maxCredentialsPerUser); if (err != CHIP_NO_ERROR) { EFR32_LOG("LockMgr().Init() failed"); diff --git a/examples/lock-app/efr32/src/LockManager.cpp b/examples/lock-app/efr32/src/LockManager.cpp index 39b507daa4e6d4..1d2d30559a24d6 100644 --- a/examples/lock-app/efr32/src/LockManager.cpp +++ b/examples/lock-app/efr32/src/LockManager.cpp @@ -31,8 +31,17 @@ TimerHandle_t sLockTimer; using namespace ::chip::DeviceLayer::Internal; -CHIP_ERROR LockManager::Init(chip::app::DataModel::Nullable state) +CHIP_ERROR LockManager::Init(chip::app::DataModel::Nullable state, + uint8_t maxNumberOfCredentialsPerUser) { + // Allocate buffer for credentials + if (!mCredentials.Alloc(maxNumberOfCredentialsPerUser)) + { + EFR32_LOG("Failed to allocate array for lock credentials"); + return APP_ERROR_ALLOCATION_FAILED; + } + mMaxCredentialsPerUser = maxNumberOfCredentialsPerUser; + // Create FreeRTOS sw timer for lock timer. sLockTimer = xTimerCreate("lockTmr", // Just a text name, not used by the RTOS kernel 1, // == default timer period (mS) @@ -67,7 +76,7 @@ bool LockManager::ReadConfigValues() EFR32Config::ReadConfigValueBin(EFR32Config::kConfigKey_CredentialData, mCredentialData, sizeof(mCredentialData), outLen); - EFR32Config::ReadConfigValueBin(EFR32Config::kConfigKey_UserCredentials, reinterpret_cast(&mCredentials), + EFR32Config::ReadConfigValueBin(EFR32Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials.Get()), sizeof(DlCredential), outLen); return true; @@ -254,7 +263,7 @@ bool LockManager::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip::F return false; } - if (totalCredentials > sizeof(DOOR_LOCK_MAX_CREDENTIALS_PER_USER)) + if (totalCredentials > mMaxCredentialsPerUser) { ChipLogError(Zcl, "Cannot set user - total number of credentials is too big [endpoint=%d,index=%d,totalCredentials=%u]", mEndpointId, userIndex, totalCredentials); @@ -278,13 +287,13 @@ bool LockManager::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip::F mCredentials[i].CredentialIndex = i + 1; } - userInStorage.credentials = chip::Span(mCredentials, totalCredentials); + userInStorage.credentials = chip::Span(mCredentials.Get(), totalCredentials); // Save user information in NVM flash EFR32Config::WriteConfigValueBin(EFR32Config::kConfigKey_LockUser, reinterpret_cast(&userInStorage), sizeof(EmberAfPluginDoorLockUserInfo)); - EFR32Config::WriteConfigValueBin(EFR32Config::kConfigKey_UserCredentials, reinterpret_cast(&mCredentials), + EFR32Config::WriteConfigValueBin(EFR32Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials.Get()), sizeof(DlCredential)); EFR32Config::WriteConfigValueStr(EFR32Config::kConfigKey_LockUserName, mUserName, sizeof(userName.size())); diff --git a/examples/lock-app/linux/include/LockEndpoint.h b/examples/lock-app/linux/include/LockEndpoint.h index 24a968f0fe5a6b..bee91e7265239f 100644 --- a/examples/lock-app/linux/include/LockEndpoint.h +++ b/examples/lock-app/linux/include/LockEndpoint.h @@ -21,7 +21,18 @@ #include #include -struct LockUserInfo; +struct LockUserInfo +{ + char userName[DOOR_LOCK_USER_NAME_BUFFER_SIZE]; + uint32_t userUniqueId; + DlUserStatus userStatus; + DlUserType userType; + DlCredentialRule credentialRule; + std::vector credentials; + chip::FabricIndex createdBy; + chip::FabricIndex lastModifiedBy; +}; + struct LockCredentialInfo; struct WeekDaysScheduleInfo; struct YearDayScheduleInfo; @@ -32,15 +43,20 @@ class LockEndpoint { public: LockEndpoint(chip::EndpointId endpointId, uint16_t numberOfLockUsersSupported, uint16_t numberOfCredentialsSupported, - uint8_t weekDaySchedulesPerUser, uint8_t yearDaySchedulesPerUser) : - mEndpointId(endpointId), - mLockState(DlLockState::kLocked), mLockUsers(numberOfLockUsersSupported), + uint8_t weekDaySchedulesPerUser, uint8_t yearDaySchedulesPerUser, uint8_t numberOfCredentialsPerUser) : + mEndpointId{ endpointId }, + mLockState{ DlLockState::kLocked }, mLockUsers(numberOfLockUsersSupported), mLockCredentials(numberOfCredentialsSupported + 1), mWeekDaySchedules(numberOfLockUsersSupported, std::vector(weekDaySchedulesPerUser)), - mYearDaySchedules(numberOfLockUsersSupported, std::vector(numberOfLockUsersSupported)) - {} + mYearDaySchedules(numberOfLockUsersSupported, std::vector(yearDaySchedulesPerUser)) + { + for (auto & lockUser : mLockUsers) + { + lockUser.credentials.reserve(numberOfCredentialsPerUser); + } + } - inline chip::EndpointId GetEndpointId() { return mEndpointId; } + inline chip::EndpointId GetEndpointId() const { return mEndpointId; } bool Lock(const Optional & pin, DlOperationError & err); bool Unlock(const Optional & pin, DlOperationError & err); @@ -53,8 +69,8 @@ class LockEndpoint bool GetCredential(uint16_t credentialIndex, DlCredentialType credentialType, EmberAfPluginDoorLockCredentialInfo & credential) const; - bool SetCredential(uint16_t credentialIndex, DlCredentialStatus credentialStatus, DlCredentialType credentialType, - const chip::ByteSpan & credentialData); + bool SetCredential(uint16_t credentialIndex, chip::FabricIndex creator, chip::FabricIndex modifier, + DlCredentialStatus credentialStatus, DlCredentialType credentialType, const chip::ByteSpan & credentialData); DlStatus GetSchedule(uint8_t weekDayIndex, uint16_t userIndex, EmberAfPluginDoorLockWeekDaySchedule & schedule); DlStatus GetSchedule(uint8_t yearDayIndex, uint16_t userIndex, EmberAfPluginDoorLockYearDaySchedule & schedule); @@ -78,23 +94,12 @@ class LockEndpoint std::vector> mYearDaySchedules; }; -struct LockUserInfo -{ - char userName[DOOR_LOCK_USER_NAME_BUFFER_SIZE]; - DlCredential credentials[DOOR_LOCK_MAX_CREDENTIALS_PER_USER]; - size_t totalCredentials; - uint32_t userUniqueId; - DlUserStatus userStatus; - DlUserType userType; - DlCredentialRule credentialRule; - chip::FabricIndex createdBy; - chip::FabricIndex lastModifiedBy; -}; - struct LockCredentialInfo { DlCredentialStatus status; DlCredentialType credentialType; + chip::FabricIndex createdBy; + chip::FabricIndex modifiedBy; uint8_t credentialData[DOOR_LOCK_CREDENTIAL_INFO_MAX_DATA_SIZE]; size_t credentialDataSize; }; diff --git a/examples/lock-app/linux/include/LockManager.h b/examples/lock-app/linux/include/LockManager.h index dcd722965fc7f1..56c5535fee095b 100644 --- a/examples/lock-app/linux/include/LockManager.h +++ b/examples/lock-app/linux/include/LockManager.h @@ -42,8 +42,8 @@ class LockManager bool GetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialType credentialType, EmberAfPluginDoorLockCredentialInfo & credential); - bool SetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialStatus credentialStatus, - DlCredentialType credentialType, const chip::ByteSpan & credentialData); + bool SetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, chip::FabricIndex creator, chip::FabricIndex modifier, + DlCredentialStatus credentialStatus, DlCredentialType credentialType, const chip::ByteSpan & credentialData); DlStatus GetSchedule(chip::EndpointId endpointId, uint8_t weekDayIndex, uint16_t userIndex, EmberAfPluginDoorLockWeekDaySchedule & schedule); diff --git a/examples/lock-app/linux/src/LockEndpoint.cpp b/examples/lock-app/linux/src/LockEndpoint.cpp index ef2c030ea6abfd..404fecebff0913 100644 --- a/examples/lock-app/linux/src/LockEndpoint.cpp +++ b/examples/lock-app/linux/src/LockEndpoint.cpp @@ -34,7 +34,7 @@ bool LockEndpoint::GetUser(uint16_t userIndex, EmberAfPluginDoorLockUserInfo & u { ChipLogProgress(Zcl, "Lock App: LockEndpoint::GetUser [endpoint=%d,userIndex=%hu]", mEndpointId, userIndex); - uint16_t adjustedUserIndex = static_cast(userIndex - 1); + auto adjustedUserIndex = static_cast(userIndex - 1); if (adjustedUserIndex > mLockUsers.size()) { ChipLogError(Zcl, "Cannot get user - index out of range [endpoint=%d,index=%hu,adjustedIndex=%d]", mEndpointId, userIndex, @@ -51,7 +51,7 @@ bool LockEndpoint::GetUser(uint16_t userIndex, EmberAfPluginDoorLockUserInfo & u } user.userName = chip::CharSpan(userInDb.userName, strlen(userInDb.userName)); - user.credentials = chip::Span(userInDb.credentials, userInDb.totalCredentials); + user.credentials = chip::Span(userInDb.credentials.data(), userInDb.credentials.size()); user.userUniqueId = userInDb.userUniqueId; user.userType = userInDb.userType; user.credentialRule = userInDb.credentialRule; @@ -82,7 +82,7 @@ bool LockEndpoint::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip:: to_underlying(userStatus), to_underlying(usertype), to_underlying(credentialRule), credentials, static_cast(totalCredentials)); - uint16_t adjustedUserIndex = static_cast(userIndex - 1); + auto adjustedUserIndex = static_cast(userIndex - 1); if (adjustedUserIndex > mLockUsers.size()) { ChipLogError(Zcl, "Cannot set user - index out of range [endpoint=%d,index=%d,adjustedUserIndex=%u]", mEndpointId, @@ -91,7 +91,6 @@ bool LockEndpoint::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip:: } auto & userInStorage = mLockUsers[adjustedUserIndex]; - if (userName.size() > DOOR_LOCK_MAX_USER_NAME_SIZE) { ChipLogError(Zcl, "Cannot set user - user name is too long [endpoint=%d,index=%d,adjustedUserIndex=%u]", mEndpointId, @@ -99,12 +98,13 @@ bool LockEndpoint::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip:: return false; } - if (totalCredentials > sizeof(DOOR_LOCK_MAX_CREDENTIALS_PER_USER)) + if (totalCredentials > userInStorage.credentials.capacity()) { ChipLogError(Zcl, "Cannot set user - total number of credentials is too big [endpoint=%d,index=%d,adjustedUserIndex=%u" - ",totalCredentials=%u]", - mEndpointId, userIndex, adjustedUserIndex, static_cast(totalCredentials)); + ",totalCredentials=%u,maxNumberOfCredentials=%u]", + mEndpointId, userIndex, adjustedUserIndex, static_cast(totalCredentials), + static_cast(userInStorage.credentials.capacity())); return false; } @@ -117,10 +117,10 @@ bool LockEndpoint::SetUser(uint16_t userIndex, chip::FabricIndex creator, chip:: userInStorage.lastModifiedBy = modifier; userInStorage.createdBy = creator; - userInStorage.totalCredentials = totalCredentials; + userInStorage.credentials.clear(); for (size_t i = 0; i < totalCredentials; ++i) { - userInStorage.credentials[i] = credentials[i]; + userInStorage.credentials.push_back(credentials[i]); } ChipLogProgress(Zcl, "Successfully set the user [mEndpointId=%d,index=%d,adjustedIndex=%d]", mEndpointId, userIndex, @@ -151,21 +151,26 @@ bool LockEndpoint::GetCredential(uint16_t credentialIndex, DlCredentialType cred } credential.credentialType = credentialInStorage.credentialType; credential.credentialData = chip::ByteSpan(credentialInStorage.credentialData, credentialInStorage.credentialDataSize); + credential.createdBy = credentialInStorage.createdBy; + credential.lastModifiedBy = credentialInStorage.modifiedBy; - ChipLogDetail(Zcl, "Found occupied credential [endpoint=%d,index=%u,type=%u,dataSize=%u]", mEndpointId, credentialIndex, - to_underlying(credential.credentialType), static_cast(credential.credentialData.size())); + ChipLogDetail(Zcl, "Found occupied credential [endpoint=%d,index=%u,type=%u,dataSize=%u,createdBy=%u,modifiedBy=%u]", + mEndpointId, credentialIndex, to_underlying(credential.credentialType), + static_cast(credential.credentialData.size()), credential.createdBy, credential.lastModifiedBy); return true; } -bool LockEndpoint::SetCredential(uint16_t credentialIndex, DlCredentialStatus credentialStatus, DlCredentialType credentialType, +bool LockEndpoint::SetCredential(uint16_t credentialIndex, chip::FabricIndex creator, chip::FabricIndex modifier, + DlCredentialStatus credentialStatus, DlCredentialType credentialType, const chip::ByteSpan & credentialData) { - ChipLogProgress(Zcl, - "Lock App: LockEndpoint::SetCredential " - "[endpoint=%d,credentialIndex=%u,credentialStatus=%u,credentialType=%u,credentialDataSize=%u]", - mEndpointId, credentialIndex, to_underlying(credentialStatus), to_underlying(credentialType), - static_cast(credentialData.size())); + ChipLogProgress( + Zcl, + "Lock App: LockEndpoint::SetCredential " + "[endpoint=%d,credentialIndex=%u,credentialStatus=%u,credentialType=%u,credentialDataSize=%u,creator=%u,modifier=%u]", + mEndpointId, credentialIndex, to_underlying(credentialStatus), to_underlying(credentialType), + static_cast(credentialData.size()), creator, modifier); if (credentialIndex >= mLockCredentials.size() || (0 == credentialIndex && DlCredentialType::kProgrammingPIN != credentialType)) { @@ -185,11 +190,14 @@ bool LockEndpoint::SetCredential(uint16_t credentialIndex, DlCredentialStatus cr } credentialInStorage.status = credentialStatus; credentialInStorage.credentialType = credentialType; + credentialInStorage.createdBy = creator; + credentialInStorage.modifiedBy = modifier; std::memcpy(credentialInStorage.credentialData, credentialData.data(), credentialData.size()); credentialInStorage.credentialDataSize = credentialData.size(); - ChipLogProgress(Zcl, "Successfully set the credential [mEndpointId=%d,index=%d,credentialType=%u]", mEndpointId, - credentialIndex, to_underlying(credentialType)); + ChipLogProgress(Zcl, "Successfully set the credential [mEndpointId=%d,index=%d,credentialType=%u,creator=%u,modifier=%u]", + mEndpointId, credentialIndex, to_underlying(credentialType), credentialInStorage.createdBy, + credentialInStorage.modifiedBy); return true; } diff --git a/examples/lock-app/linux/src/LockManager.cpp b/examples/lock-app/linux/src/LockManager.cpp index 4b2806e15ab992..2858be79db2f74 100644 --- a/examples/lock-app/linux/src/LockManager.cpp +++ b/examples/lock-app/linux/src/LockManager.cpp @@ -59,6 +59,16 @@ bool LockManager::InitEndpoint(chip::EndpointId endpointId) numberOfSupportedCredentials = std::max(numberOfPINCredentialsSupported, numberOfRFIDCredentialsSupported); } + uint8_t numberOfCredentialsSupportedPerUser = 0; + if (!DoorLockServer::Instance().GetNumberOfCredentialsSupportedPerUser(endpointId, numberOfCredentialsSupportedPerUser)) + { + ChipLogError(Zcl, + "Unable to get number of credentials supported per user when initializing lock endpoint, defaulting to 5 " + "[endpointId=%d]", + endpointId); + numberOfCredentialsSupportedPerUser = 5; + } + uint8_t numberOfWeekDaySchedulesPerUser = 0; if (!DoorLockServer::Instance().GetNumberOfWeekDaySchedulesPerUserSupported(endpointId, numberOfWeekDaySchedulesPerUser)) { @@ -79,14 +89,15 @@ bool LockManager::InitEndpoint(chip::EndpointId endpointId) numberOfYearDaySchedulesPerUser = 10; } - mEndpoints.push_back(LockEndpoint(endpointId, numberOfSupportedUsers, numberOfSupportedCredentials, - numberOfWeekDaySchedulesPerUser, numberOfYearDaySchedulesPerUser)); + mEndpoints.emplace_back(endpointId, numberOfSupportedUsers, numberOfSupportedCredentials, numberOfWeekDaySchedulesPerUser, + numberOfYearDaySchedulesPerUser, numberOfCredentialsSupportedPerUser); - ChipLogProgress( - Zcl, - "Initialized new lock door endpoint [id=%d,users=%d,credentials=%d,weekDaySchedulesPerUser=%d,yearDaySchedulesPerUser=%d]", - endpointId, numberOfSupportedUsers, numberOfSupportedCredentials, numberOfWeekDaySchedulesPerUser, - numberOfYearDaySchedulesPerUser); + ChipLogProgress(Zcl, + "Initialized new lock door endpoint " + "[id=%d,users=%d,credentials=%d,weekDaySchedulesPerUser=%d,yearDaySchedulesPerUser=%d," + "numberOfCredentialsSupportedPerUser=%d]", + endpointId, numberOfSupportedUsers, numberOfSupportedCredentials, numberOfWeekDaySchedulesPerUser, + numberOfYearDaySchedulesPerUser, numberOfCredentialsSupportedPerUser); return true; } @@ -150,8 +161,9 @@ bool LockManager::GetCredential(chip::EndpointId endpointId, uint16_t credential return lockEndpoint->GetCredential(credentialIndex, credentialType, credential); } -bool LockManager::SetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialStatus credentialStatus, - DlCredentialType credentialType, const chip::ByteSpan & credentialData) +bool LockManager::SetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, chip::FabricIndex creator, + chip::FabricIndex modifier, DlCredentialStatus credentialStatus, DlCredentialType credentialType, + const chip::ByteSpan & credentialData) { auto lockEndpoint = getEndpoint(endpointId); if (nullptr == lockEndpoint) @@ -159,7 +171,7 @@ bool LockManager::SetCredential(chip::EndpointId endpointId, uint16_t credential ChipLogError(Zcl, "Unable to set the credential - endpoint does not exist or not initialized [endpointId=%d]", endpointId); return false; } - return lockEndpoint->SetCredential(credentialIndex, credentialStatus, credentialType, credentialData); + return lockEndpoint->SetCredential(credentialIndex, creator, modifier, credentialStatus, credentialType, credentialData); } DlStatus LockManager::GetSchedule(chip::EndpointId endpointId, uint8_t weekDayIndex, uint16_t userIndex, @@ -217,11 +229,11 @@ DlStatus LockManager::SetSchedule(chip::EndpointId endpointId, uint8_t yearDayIn LockEndpoint * LockManager::getEndpoint(chip::EndpointId endpointId) { - for (auto it = mEndpoints.begin(); it != mEndpoints.end(); ++it) + for (auto & mEndpoint : mEndpoints) { - if (it->GetEndpointId() == endpointId) + if (mEndpoint.GetEndpointId() == endpointId) { - return &(*it); + return &mEndpoint; } } return nullptr; diff --git a/examples/lock-app/linux/src/ZCLDoorLockCallbacks.cpp b/examples/lock-app/linux/src/ZCLDoorLockCallbacks.cpp index f29ea051eb6234..ae696ef58c7d86 100644 --- a/examples/lock-app/linux/src/ZCLDoorLockCallbacks.cpp +++ b/examples/lock-app/linux/src/ZCLDoorLockCallbacks.cpp @@ -42,10 +42,12 @@ bool emberAfPluginDoorLockGetCredential(chip::EndpointId endpointId, uint16_t cr return LockManager::Instance().GetCredential(endpointId, credentialIndex, credentialType, credential); } -bool emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialStatus credentialStatus, +bool emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, chip::FabricIndex creator, + chip::FabricIndex modifier, DlCredentialStatus credentialStatus, DlCredentialType credentialType, const chip::ByteSpan & credentialData) { - return LockManager::Instance().SetCredential(endpointId, credentialIndex, credentialStatus, credentialType, credentialData); + return LockManager::Instance().SetCredential(endpointId, credentialIndex, creator, modifier, credentialStatus, credentialType, + credentialData); } DlStatus emberAfPluginDoorLockGetSchedule(chip::EndpointId endpointId, uint8_t weekdayIndex, uint16_t userIndex, diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 47e132f8a9dca3..4b9b9e578251e3 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -308,6 +308,7 @@ server cluster DoorLock = 257 { kDuplicate = 2; kOccupied = 3; kInvalidField = 133; + kResourceExhausted = 137; kNotFound = 139; } @@ -585,6 +586,7 @@ server cluster DoorLock = 257 { readonly attribute int8u maxRFIDCodeLength = 25; readonly attribute int8u minRFIDCodeLength = 26; readonly attribute DlCredentialRuleMask credentialRulesSupport = 27; + readonly attribute int8u numberOfCredentialsSupportedPerUser = 28; attribute access(write: manage) char_string<3> language = 33; attribute access(write: manage) int32u autoRelockTime = 35; attribute access(write: manage) int8u soundVolume = 36; @@ -724,7 +726,9 @@ server cluster DoorLock = 257 { response struct GetCredentialStatusResponse = 37 { boolean credentialExists = 0; nullable INT16U userIndex = 1; - nullable INT16U nextCredentialIndex = 2; + nullable fabric_idx creatorFabricIndex = 2; + nullable fabric_idx lastModifiedFabricIndex = 3; + nullable INT16U nextCredentialIndex = 4; } timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; @@ -2113,6 +2117,7 @@ endpoint 1 { ram attribute maxRFIDCodeLength default = 20; ram attribute minRFIDCodeLength default = 10; ram attribute credentialRulesSupport default = 1; + ram attribute numberOfCredentialsSupportedPerUser default = 5; ram attribute language default = "en"; ram attribute autoRelockTime default = 60; ram attribute soundVolume; diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index d7e250e8292f3b..e2e400971f4ea7 100755 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -50,6 +50,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -76,6 +77,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -91,6 +93,7 @@ "code": 62, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -106,6 +109,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -132,6 +136,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -158,6 +163,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -173,6 +179,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -216,6 +223,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -251,6 +259,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -266,6 +275,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -341,6 +351,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -400,6 +411,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -415,6 +427,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -498,6 +511,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -573,6 +587,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -588,6 +603,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -603,6 +619,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -618,6 +635,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -633,6 +651,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -648,6 +667,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -699,6 +719,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -725,6 +746,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -740,6 +762,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -783,6 +806,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -818,6 +842,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -844,6 +869,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -870,6 +896,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -885,6 +912,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -900,6 +928,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -915,6 +944,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -930,6 +960,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -966,6 +997,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -981,6 +1013,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -996,6 +1029,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1011,6 +1045,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1026,6 +1061,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -1041,6 +1077,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1056,6 +1093,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1082,6 +1120,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1108,6 +1147,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1123,6 +1163,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1138,6 +1179,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "External", "singleton": 1, @@ -1153,6 +1195,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1168,6 +1211,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1183,6 +1227,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -1198,6 +1243,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1213,6 +1259,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1228,6 +1275,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1243,6 +1291,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 1, @@ -1258,6 +1307,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1273,6 +1323,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1288,6 +1339,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1303,6 +1355,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1318,6 +1371,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1333,6 +1387,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1348,6 +1403,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -1363,6 +1419,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1378,6 +1435,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -1393,6 +1451,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "CapabilityMinimaStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -1408,6 +1467,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -1459,6 +1519,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1502,6 +1563,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -1517,6 +1579,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -1532,6 +1595,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1567,6 +1631,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1593,6 +1658,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1608,6 +1674,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1623,6 +1690,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "OTAUpdateStateEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1638,6 +1706,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1653,6 +1722,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -1668,6 +1738,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -1683,6 +1754,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1719,6 +1791,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1734,6 +1807,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1749,6 +1823,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1785,6 +1860,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "HourFormat", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1800,6 +1876,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "CalendarType", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -1815,6 +1892,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1830,6 +1908,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1866,6 +1945,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "TempUnit", "included": 0, "storageOption": "NVM", "singleton": 0, @@ -1881,6 +1961,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1896,6 +1977,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1932,6 +2014,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -1947,6 +2030,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1983,6 +2067,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -1998,6 +2083,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2013,6 +2099,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2028,6 +2115,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2043,6 +2131,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2058,6 +2147,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2109,6 +2199,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2160,6 +2251,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2175,6 +2267,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "BasicCommissioningInfo", "included": 1, "storageOption": "External", "singleton": 0, @@ -2190,6 +2283,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "RegulatoryLocationType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2205,6 +2299,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "RegulatoryLocationType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2220,6 +2315,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -2235,6 +2331,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2250,6 +2347,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2325,6 +2423,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2376,6 +2475,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2391,6 +2491,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2406,6 +2507,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2421,6 +2523,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2436,6 +2539,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2451,6 +2555,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "NetworkCommissioningStatus", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2466,6 +2571,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2481,6 +2587,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2496,6 +2603,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2511,6 +2619,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2556,6 +2665,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2582,6 +2692,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2597,6 +2708,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2612,6 +2724,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2627,6 +2740,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2642,6 +2756,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "External", "singleton": 0, @@ -2657,6 +2772,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2672,6 +2788,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2687,6 +2804,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2702,6 +2820,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2737,6 +2856,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2763,6 +2883,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -2778,6 +2899,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2793,6 +2915,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2808,6 +2931,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -2823,6 +2947,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2838,6 +2963,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2873,6 +2999,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2899,6 +3026,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2914,6 +3042,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2929,6 +3058,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2944,6 +3074,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2959,6 +3090,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2974,6 +3106,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2989,6 +3122,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3004,6 +3138,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3019,6 +3154,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3034,6 +3170,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3049,6 +3186,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3064,6 +3202,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3079,6 +3218,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3094,6 +3234,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3109,6 +3250,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3124,6 +3266,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3139,6 +3282,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3154,6 +3298,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3169,6 +3314,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3184,6 +3330,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3199,6 +3346,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3214,6 +3362,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3229,6 +3378,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3244,6 +3394,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3259,6 +3410,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3274,6 +3426,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3289,6 +3442,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3304,6 +3458,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3319,6 +3474,7 @@ "code": 28, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3334,6 +3490,7 @@ "code": 29, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3349,6 +3506,7 @@ "code": 30, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3364,6 +3522,7 @@ "code": 31, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3379,6 +3538,7 @@ "code": 32, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3394,6 +3554,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3409,6 +3570,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3424,6 +3586,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3439,6 +3602,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3454,6 +3618,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3469,6 +3634,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3484,6 +3650,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3499,6 +3666,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3514,6 +3682,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3529,6 +3698,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3544,6 +3714,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3559,6 +3730,7 @@ "code": 44, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3574,6 +3746,7 @@ "code": 45, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3589,6 +3762,7 @@ "code": 46, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3604,6 +3778,7 @@ "code": 47, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3619,6 +3794,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3634,6 +3810,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3649,6 +3826,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3664,6 +3842,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3679,6 +3858,7 @@ "code": 52, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3694,6 +3874,7 @@ "code": 53, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3709,6 +3890,7 @@ "code": 54, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3724,6 +3906,7 @@ "code": 55, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3739,6 +3922,7 @@ "code": 56, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3754,6 +3938,7 @@ "code": 57, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3769,6 +3954,7 @@ "code": 58, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3784,6 +3970,7 @@ "code": 59, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3799,6 +3986,7 @@ "code": 60, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3814,6 +4002,7 @@ "code": 61, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3829,6 +4018,7 @@ "code": 62, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -3844,6 +4034,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3859,6 +4050,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3894,6 +4086,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -3920,8 +4113,9 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "octet_string", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -3935,8 +4129,9 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "SecurityType", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -3950,6 +4145,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "WiFiVersionType", "included": 1, "storageOption": "External", "singleton": 0, @@ -3965,6 +4161,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -3980,6 +4177,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int8s", "included": 1, "storageOption": "External", "singleton": 0, @@ -3995,6 +4193,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4010,6 +4209,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4025,6 +4225,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4040,6 +4241,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4055,6 +4257,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4070,6 +4273,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4085,6 +4289,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4100,6 +4305,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4115,6 +4321,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4130,6 +4337,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4165,6 +4373,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4191,6 +4400,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "PHYRateType", "included": 1, "storageOption": "External", "singleton": 0, @@ -4206,6 +4416,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -4221,6 +4432,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4236,6 +4448,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4251,6 +4464,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4266,6 +4480,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4281,6 +4496,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4296,6 +4512,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "External", "singleton": 0, @@ -4311,6 +4528,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "int64u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4326,6 +4544,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4341,6 +4560,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4392,6 +4612,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4418,6 +4639,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4433,6 +4655,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "fabric_idx", "included": 1, "storageOption": "External", "singleton": 0, @@ -4448,6 +4671,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -4463,6 +4687,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4562,6 +4787,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4621,6 +4847,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4636,6 +4863,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4651,6 +4879,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4666,6 +4895,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4681,6 +4911,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4696,6 +4927,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "fabric_idx", "included": 1, "storageOption": "External", "singleton": 0, @@ -4711,6 +4943,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4747,6 +4980,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4762,6 +4996,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4798,6 +5033,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -4813,6 +5049,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4839,6 +5076,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4865,6 +5103,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4880,6 +5119,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4895,6 +5135,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4910,6 +5151,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4944,6 +5186,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -4970,6 +5213,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 1, @@ -4985,6 +5229,7 @@ "code": 62, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 0, "storageOption": "RAM", "singleton": 1, @@ -5000,6 +5245,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -5026,6 +5272,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5052,6 +5299,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16s", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5067,6 +5315,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5110,6 +5359,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5145,6 +5395,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5160,6 +5411,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5235,6 +5487,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5294,6 +5547,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5309,6 +5563,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5392,6 +5647,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5467,6 +5723,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5482,6 +5739,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5497,6 +5755,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5512,6 +5771,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5527,6 +5787,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5542,6 +5803,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5593,6 +5855,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5619,6 +5882,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5634,6 +5898,7 @@ "code": 16384, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5649,6 +5914,7 @@ "code": 16385, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5664,6 +5930,7 @@ "code": 16386, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5679,6 +5946,7 @@ "code": 16387, "mfgCode": null, "side": "server", + "type": "OnOffStartUpOnOff", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5694,6 +5962,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5709,6 +5978,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5735,6 +6005,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5761,6 +6032,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5776,6 +6048,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5791,6 +6064,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5834,6 +6108,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5869,6 +6144,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5895,6 +6171,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -5921,6 +6198,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5936,6 +6214,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5951,6 +6230,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5966,6 +6246,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, @@ -5981,6 +6262,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, @@ -6007,6 +6289,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -6033,6 +6316,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -6048,6 +6332,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6063,6 +6348,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "vendor_id", "included": 1, "storageOption": "External", "singleton": 1, @@ -6078,6 +6364,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6093,6 +6380,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -6108,6 +6396,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -6123,6 +6412,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6138,6 +6428,7 @@ "code": 7, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 1, @@ -6153,6 +6444,7 @@ "code": 8, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6168,6 +6460,7 @@ "code": 9, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 1, @@ -6183,6 +6476,7 @@ "code": 10, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6198,6 +6492,7 @@ "code": 11, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6213,6 +6508,7 @@ "code": 12, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6228,6 +6524,7 @@ "code": 13, "mfgCode": null, "side": "server", + "type": "long_char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6243,6 +6540,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6258,6 +6556,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6273,6 +6572,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "NVM", "singleton": 1, @@ -6288,6 +6588,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -6303,6 +6604,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 1, @@ -6318,6 +6620,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "CapabilityMinimaStruct", "included": 1, "storageOption": "External", "singleton": 0, @@ -6333,6 +6636,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 1, @@ -6369,6 +6673,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6384,6 +6689,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6399,6 +6705,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6414,6 +6721,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6429,6 +6737,7 @@ "code": 14, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6444,6 +6753,7 @@ "code": 15, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6459,6 +6769,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6474,6 +6785,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6489,6 +6801,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6504,6 +6817,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6651,6 +6965,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6718,6 +7033,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "DlLockState", "included": 1, "storageOption": "NVM", "singleton": 0, @@ -6733,6 +7049,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "DlLockType", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6748,6 +7065,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6763,6 +7081,7 @@ "code": 3, "mfgCode": null, "side": "server", + "type": "DlDoorState", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6778,6 +7097,7 @@ "code": 4, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6793,6 +7113,7 @@ "code": 5, "mfgCode": null, "side": "server", + "type": "int32u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6808,6 +7129,7 @@ "code": 6, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6823,6 +7145,7 @@ "code": 16, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6838,6 +7161,7 @@ "code": 17, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6853,6 +7177,7 @@ "code": 18, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6868,6 +7193,7 @@ "code": 19, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6883,6 +7209,7 @@ "code": 20, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6898,6 +7225,7 @@ "code": 21, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6913,6 +7241,7 @@ "code": 22, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -6928,6 +7257,7 @@ "code": 23, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6943,6 +7273,7 @@ "code": 24, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6958,6 +7289,7 @@ "code": 25, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6973,6 +7305,7 @@ "code": 26, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6988,6 +7321,7 @@ "code": 27, "mfgCode": null, "side": "server", + "type": "DlCredentialRuleMask", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -6998,11 +7332,28 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "NumberOfCredentialsSupportedPerUser", + "code": 28, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "5", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "EnableLogging", "code": 32, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7018,6 +7369,7 @@ "code": 33, "mfgCode": null, "side": "server", + "type": "char_string", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7033,6 +7385,7 @@ "code": 34, "mfgCode": null, "side": "server", + "type": "int8u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7048,6 +7401,7 @@ "code": 35, "mfgCode": null, "side": "server", + "type": "int32u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7063,6 +7417,7 @@ "code": 36, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7078,6 +7433,7 @@ "code": 37, "mfgCode": null, "side": "server", + "type": "DlOperatingMode", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7093,6 +7449,7 @@ "code": 38, "mfgCode": null, "side": "server", + "type": "DlSupportedOperatingModes", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7108,6 +7465,7 @@ "code": 39, "mfgCode": null, "side": "server", + "type": "DlDefaultConfigurationRegister", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7123,6 +7481,7 @@ "code": 40, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7138,6 +7497,7 @@ "code": 41, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7153,6 +7513,7 @@ "code": 42, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7168,6 +7529,7 @@ "code": 43, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7183,6 +7545,7 @@ "code": 44, "mfgCode": null, "side": "server", + "type": "DlLocalProgrammingFeatures", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7198,6 +7561,7 @@ "code": 48, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7213,6 +7577,7 @@ "code": 49, "mfgCode": null, "side": "server", + "type": "int8u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7228,6 +7593,7 @@ "code": 50, "mfgCode": null, "side": "server", + "type": "boolean", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7243,6 +7609,7 @@ "code": 51, "mfgCode": null, "side": "server", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7258,6 +7625,7 @@ "code": 53, "mfgCode": null, "side": "server", + "type": "int16u", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7273,6 +7641,7 @@ "code": 64, "mfgCode": null, "side": "server", + "type": "DlAlarmMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7288,6 +7657,7 @@ "code": 65, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7303,6 +7673,7 @@ "code": 66, "mfgCode": null, "side": "server", + "type": "DlRemoteOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7318,6 +7689,7 @@ "code": 67, "mfgCode": null, "side": "server", + "type": "DlManualOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7333,6 +7705,7 @@ "code": 68, "mfgCode": null, "side": "server", + "type": "DlRFIDOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7348,6 +7721,7 @@ "code": 69, "mfgCode": null, "side": "server", + "type": "DlKeypadOperationEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7363,6 +7737,7 @@ "code": 70, "mfgCode": null, "side": "server", + "type": "DlRemoteProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7378,6 +7753,7 @@ "code": 71, "mfgCode": null, "side": "server", + "type": "DlRFIDProgrammingEventMask", "included": 0, "storageOption": "RAM", "singleton": 0, @@ -7393,6 +7769,7 @@ "code": 65528, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -7408,6 +7785,7 @@ "code": 65529, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -7423,6 +7801,7 @@ "code": 65531, "mfgCode": null, "side": "server", + "type": "array", "included": 0, "storageOption": "External", "singleton": 0, @@ -7438,6 +7817,7 @@ "code": 65532, "mfgCode": null, "side": "server", + "type": "bitmap32", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7453,6 +7833,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7479,6 +7860,7 @@ "code": 65533, "mfgCode": null, "side": "client", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7505,6 +7887,7 @@ "code": 0, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7520,6 +7903,7 @@ "code": 1, "mfgCode": null, "side": "server", + "type": "enum8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7535,6 +7919,7 @@ "code": 2, "mfgCode": null, "side": "server", + "type": "bitmap8", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7550,6 +7935,7 @@ "code": 65533, "mfgCode": null, "side": "server", + "type": "int16u", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7584,5 +7970,6 @@ "endpointVersion": 1, "deviceIdentifier": 10 } - ] + ], + "log": [] } \ No newline at end of file diff --git a/src/app/clusters/door-lock-server/door-lock-server.cpp b/src/app/clusters/door-lock-server/door-lock-server.cpp index e2a93fbb2a6418..939d4a3baf7a40 100644 --- a/src/app/clusters/door-lock-server/door-lock-server.cpp +++ b/src/app/clusters/door-lock-server/door-lock-server.cpp @@ -190,6 +190,13 @@ bool DoorLockServer::GetNumberOfYearDaySchedulesPerUserSupported(chip::EndpointI Attributes::NumberOfYearDaySchedulesSupportedPerUser::Get, numberOfYearDaySchedulesPerUser); } +bool DoorLockServer::GetNumberOfCredentialsSupportedPerUser(chip::EndpointId endpointId, + uint8_t & numberOfCredentialsSupportedPerUser) +{ + return GetAttribute(endpointId, Attributes::NumberOfCredentialsSupportedPerUser::Id, + Attributes::NumberOfCredentialsSupportedPerUser::Get, numberOfCredentialsSupportedPerUser); +} + void DoorLockServer::SetUserCommandHandler(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::DoorLock::Commands::SetUser::DecodableType & commandData) @@ -624,8 +631,9 @@ void DoorLockServer::GetCredentialStatusCommandHandler( if (!emberAfPluginDoorLockGetCredential(commandPath.mEndpointId, credentialIndex, credentialType, credentialInfo)) { emberAfDoorLockClusterPrintln("[GetCredentialStatus] Unable to get the credential: app error " - "[endpointId=%d,credentialIndex=%d,credentialType=%u]", - commandPath.mEndpointId, credentialIndex, to_underlying(credentialType)); + "[endpointId=%d,credentialIndex=%d,credentialType=%u,creator=%u,modifier=%u]", + commandPath.mEndpointId, credentialIndex, to_underlying(credentialType), + credentialInfo.createdBy, credentialInfo.lastModifiedBy); emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_FAILURE); return; } @@ -656,9 +664,22 @@ void DoorLockServer::GetCredentialStatusCommandHandler( SuccessOrExit(err = commandObj->PrepareCommand(path)); VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE); SuccessOrExit(err = writer->Put(TLV::ContextTag(to_underlying(ResponseFields::kCredentialExists)), credentialExists)); - if (0 != userIndexWithCredential) + if (credentialExists) { - SuccessOrExit(err = writer->Put(TLV::ContextTag(to_underlying(ResponseFields::kUserIndex)), userIndexWithCredential)); + if (0 != userIndexWithCredential) + { + SuccessOrExit(err = writer->Put(TLV::ContextTag(to_underlying(ResponseFields::kUserIndex)), userIndexWithCredential)); + } + if (kUndefinedFabricIndex != credentialInfo.createdBy) + { + SuccessOrExit( + err = writer->Put(TLV::ContextTag(to_underlying(ResponseFields::kCreatorFabricIndex)), credentialInfo.createdBy)); + } + if (kUndefinedFabricIndex != credentialInfo.lastModifiedBy) + { + SuccessOrExit(err = writer->Put(TLV::ContextTag(to_underlying(ResponseFields::kLastModifiedFabricIndex)), + credentialInfo.lastModifiedBy)); + } } if (findUnoccupiedCredentialSlot(commandPath.mEndpointId, credentialType, static_cast(credentialIndex + 1), nextCredentialIndex)) @@ -874,7 +895,7 @@ void DoorLockServer::GetWeekDayScheduleCommandHandler( return; } - EmberAfPluginDoorLockWeekDaySchedule scheduleInfo; + EmberAfPluginDoorLockWeekDaySchedule scheduleInfo{}; auto status = emberAfPluginDoorLockGetSchedule(endpointId, weekDayIndex, userIndex, scheduleInfo); if (DlStatus::kSuccess != status) { @@ -1084,7 +1105,7 @@ void DoorLockServer::GetYearDayScheduleCommandHandler( return; } - EmberAfPluginDoorLockYearDaySchedule scheduleInfo; + EmberAfPluginDoorLockYearDaySchedule scheduleInfo{}; auto status = emberAfPluginDoorLockGetSchedule(endpointId, yearDayIndex, userIndex, scheduleInfo); if (DlStatus::kSuccess != status) { @@ -1180,7 +1201,7 @@ bool DoorLockServer::HasFeature(chip::EndpointId endpointId, DoorLockFeature fea uint32_t featureMap = 0; bool success = GetAttribute(endpointId, Attributes::FeatureMap::Id, Attributes::FeatureMap::Get, featureMap); - return success ? ((featureMap & to_underlying(feature)) != 0) : false; + return success && ((featureMap & to_underlying(feature)) != 0); } /********************************************************** @@ -1657,7 +1678,8 @@ EmberAfStatus DoorLockServer::clearUser(chip::EndpointId endpointId, chip::Fabri "[ClearUser] Clearing associated credential [endpointId=%d,userIndex=%d,credentialType=%u,credentialIndex=%d]", endpointId, userIndex, credential.CredentialType, credential.CredentialIndex); - if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, DlCredentialStatus::kAvailable, + if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, kUndefinedFabricIndex, + kUndefinedFabricIndex, DlCredentialStatus::kAvailable, static_cast(credential.CredentialType), chip::ByteSpan())) { ChipLogError(Zcl, @@ -1717,8 +1739,9 @@ DlStatus DoorLockServer::createNewCredentialAndUser(chip::EndpointId endpointId, return DlStatus::kFailure; } - if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, DlCredentialStatus::kOccupied, - static_cast(credential.CredentialType), credentialData)) + if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, creatorFabricIdx, creatorFabricIdx, + DlCredentialStatus::kOccupied, static_cast(credential.CredentialType), + credentialData)) { emberAfDoorLockClusterPrintln("[SetCredential] Unable to set the credential: app error " "[endpointId=%d,credentialIndex=%d,credentialType=%u,dataLength=%u]", @@ -1777,8 +1800,9 @@ DlStatus DoorLockServer::createNewCredentialAndAddItToUser(chip::EndpointId endp return status; } - if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, DlCredentialStatus::kOccupied, - static_cast(credential.CredentialType), credentialData)) + if (!emberAfPluginDoorLockSetCredential(endpointId, credential.CredentialIndex, modifierFabricIdx, modifierFabricIdx, + DlCredentialStatus::kOccupied, static_cast(credential.CredentialType), + credentialData)) { emberAfDoorLockClusterPrintln("[SetCredential] Unable to set the credential: app error " "[endpointId=%d,credentialIndex=%d,credentialType=%u,dataLength=%u]", @@ -1803,19 +1827,8 @@ DlStatus DoorLockServer::addCredentialToUser(chip::EndpointId endpointId, chip:: } // TODO: Do we need to check the modifier fabric here? Discuss with Spec team and add it if necessary. - for (size_t i = 0; i < user.credentials.size(); ++i) { - // appclusters, 5.2.4.40: If user already contains the credential of the same type we should return INVALID_COMMAND - if (user.credentials.data()[i].CredentialType == credential.CredentialType) - { - emberAfDoorLockClusterPrintln( - "[AddCredentialToUser] Unable to add credential to user: credential with this type already exists " - "[endpointId=%d,userIndex=%d,credentialType=%d]", - endpointId, userIndex, credential.CredentialType); - return DlStatus::kOccupied; - } - // appclusters, 5.2.4.40: user should not be already associated with given credentialIndex if (user.credentials.data()[i].CredentialIndex == credential.CredentialIndex) { @@ -1827,21 +1840,40 @@ DlStatus DoorLockServer::addCredentialToUser(chip::EndpointId endpointId, chip:: } } - // appclusters: spec defines up to 5 credentials per user - if (user.credentials.size() + 1 > DOOR_LOCK_MAX_CREDENTIALS_PER_USER) + uint8_t maxCredentialsPerUser; + if (!GetNumberOfCredentialsSupportedPerUser(endpointId, maxCredentialsPerUser)) + { + ChipLogError(Zcl, + "[AddCredentialToUser] Unable to get the number of available credentials per user: internal error " + "[endpointId=%d,userIndex=%d,credentialType=%d,credentialIndex=%d]", + endpointId, userIndex, credential.CredentialType, credential.CredentialIndex); + return DlStatus::kFailure; + } + + // appclusters: spec defines up to NumberOfCredentialsSupportedPerUser credentials per user + if (user.credentials.size() + 1 > maxCredentialsPerUser) { emberAfDoorLockClusterPrintln("[AddCredentialToUser] Unable to add credentials to user: too many credentials " "[endpointId=%d,userIndex=%d,userTotalCredentials=%u]", endpointId, userIndex, static_cast(user.credentials.size())); - return DlStatus::kInvalidField; + return DlStatus::kResourceExhausted; } - DlCredential newCredentials[DOOR_LOCK_MAX_CREDENTIALS_PER_USER]; - memcpy(newCredentials, user.credentials.data(), sizeof(DlCredential) * user.credentials.size()); + chip::Platform::ScopedMemoryBuffer newCredentials; + if (!newCredentials.Alloc(user.credentials.size() + 1)) + { + ChipLogError(Zcl, + "[AddCredentialToUser] Unable to allocate the buffer for credentials " + "[endpointId=%d,userIndex=%d,userTotalCredentials=%u]", + endpointId, userIndex, static_cast(user.credentials.size())); + return DlStatus::kFailure; + } + + memcpy(newCredentials.Get(), user.credentials.data(), sizeof(DlCredential) * user.credentials.size()); newCredentials[user.credentials.size()] = credential; if (!emberAfPluginDoorLockSetUser(endpointId, userIndex, user.createdBy, modifierFabricIdx, user.userName, user.userUniqueId, - user.userStatus, user.userType, user.credentialRule, newCredentials, + user.userStatus, user.userType, user.credentialRule, newCredentials.Get(), user.credentials.size() + 1)) { emberAfDoorLockClusterPrintln( @@ -1879,8 +1911,17 @@ DlStatus DoorLockServer::modifyCredentialForUser(chip::EndpointId endpointId, ch // appclusters, 5.2.4.40: user should already be associated with given credentialIndex if (user.credentials.data()[i].CredentialIndex == credential.CredentialIndex) { - DlCredential newCredentials[DOOR_LOCK_MAX_CREDENTIALS_PER_USER]; - memcpy(newCredentials, user.credentials.data(), sizeof(DlCredential) * user.credentials.size()); + chip::Platform::ScopedMemoryBuffer newCredentials; + if (!newCredentials.Alloc(user.credentials.size())) + { + ChipLogError(Zcl, + "[ModifyUserCredential] Unable to allocate the buffer for credentials " + "[endpointId=%d,userIndex=%d,userTotalCredentials=%u,credentialType=%d,credentialIndex=%d]", + endpointId, userIndex, static_cast(user.credentials.size()), credential.CredentialType, + credential.CredentialIndex); + return DlStatus::kFailure; + } + memcpy(newCredentials.Get(), user.credentials.data(), sizeof(DlCredential) * user.credentials.size()); newCredentials[i] = credential; emberAfDoorLockClusterPrintln( @@ -1890,7 +1931,7 @@ DlStatus DoorLockServer::modifyCredentialForUser(chip::EndpointId endpointId, ch if (!emberAfPluginDoorLockSetUser(endpointId, userIndex, user.createdBy, modifierFabricIdx, user.userName, user.userUniqueId, user.userStatus, user.userType, user.credentialRule, - newCredentials, user.credentials.size())) + newCredentials.Get(), user.credentials.size())) { emberAfDoorLockClusterPrintln( "[ModifyUserCredential] Unable to modify user credential: credential with this index is already associated " @@ -1923,7 +1964,7 @@ DlStatus DoorLockServer::createCredential(chip::EndpointId endpointId, chip::Fab chip::NodeId sourceNodeId, uint16_t credentialIndex, DlCredentialType credentialType, const EmberAfPluginDoorLockCredentialInfo & existingCredential, const chip::ByteSpan & credentialData, Nullable userIndex, - Nullable userStatus, Nullable userType, + const Nullable & userStatus, Nullable userType, uint16_t & createdUserIndex) { // appclusters, 5.2.4.41.1: should send the OCCUPIED in the response when the credential is in use @@ -1996,8 +2037,8 @@ DlStatus DoorLockServer::modifyProgrammingPIN(chip::EndpointId endpointId, chip: return DlStatus::kFailure; } - if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, existingCredential.status, - existingCredential.credentialType, credentialData)) + if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, existingCredential.createdBy, modifierFabricIndex, + existingCredential.status, existingCredential.credentialType, credentialData)) { emberAfDoorLockClusterPrintln("[SetCredential] Unable to modify the credential: app error " "[endpointId=%d,credentialIndex=%d,credentialType=%u,credentialDataSize=%u]", @@ -2021,7 +2062,7 @@ DlStatus DoorLockServer::modifyCredential(chip::EndpointId endpointId, chip::Fab chip::NodeId sourceNodeId, uint16_t credentialIndex, DlCredentialType credentialType, const EmberAfPluginDoorLockCredentialInfo & existingCredential, const chip::ByteSpan & credentialData, uint16_t userIndex, - Nullable userStatus, Nullable userType) + const Nullable & userStatus, Nullable userType) { // appclusters, 5.2.4.40: when modifying a credential, userStatus and userType shall both be NULL. @@ -2038,8 +2079,8 @@ DlStatus DoorLockServer::modifyCredential(chip::EndpointId endpointId, chip::Fab if (DlStatus::kSuccess == status) { - if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, existingCredential.status, - existingCredential.credentialType, credentialData)) + if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, existingCredential.createdBy, modifierFabricIndex, + existingCredential.status, existingCredential.credentialType, credentialData)) { emberAfDoorLockClusterPrintln("[SetCredential] Unable to modify the credential: app error " "[endpointId=%d,credentialIndex=%d,credentialType=%u,credentialDataSize=%u]", @@ -2361,8 +2402,8 @@ EmberAfStatus DoorLockServer::clearCredential(chip::EndpointId endpointId, chip: } // 3. If the user wasn't deleted, delete the credential and adjust the list of credentials for related user in the storage - if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, DlCredentialStatus::kAvailable, credentialType, - chip::ByteSpan())) + if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, kUndefinedFabricIndex, kUndefinedFabricIndex, + DlCredentialStatus::kAvailable, credentialType, chip::ByteSpan())) { ChipLogError(Zcl, "[clearCredential] Unable to clear credential - couldn't write new credential to database " @@ -2371,8 +2412,18 @@ EmberAfStatus DoorLockServer::clearCredential(chip::EndpointId endpointId, chip: return EMBER_ZCL_STATUS_FAILURE; } + uint8_t maxCredentialsPerUser; + if (!GetNumberOfCredentialsSupportedPerUser(endpointId, maxCredentialsPerUser)) + { + ChipLogError(Zcl, + "[clearCredential] Unable to get the number of available credentials per user: internal error " + "[endpointId=%d,credentialType=%d,credentialIndex=%d]", + endpointId, to_underlying(credentialType), credentialIndex); + return EMBER_ZCL_STATUS_FAILURE; + } + // Should never happen, only possible if the implementation of application is incorrect - if (relatedUser.credentials.size() > DOOR_LOCK_MAX_CREDENTIALS_PER_USER) + if (relatedUser.credentials.size() > maxCredentialsPerUser) { ChipLogError(Zcl, "[clearCredential] Unable to clear credential for related user - user has too many credentials associated" @@ -2383,7 +2434,17 @@ EmberAfStatus DoorLockServer::clearCredential(chip::EndpointId endpointId, chip: return EMBER_ZCL_STATUS_FAILURE; } - DlCredential newCredentials[DOOR_LOCK_MAX_CREDENTIALS_PER_USER]; + chip::Platform::ScopedMemoryBuffer newCredentials; + if (!newCredentials.Alloc(relatedUser.credentials.size())) + { + ChipLogError(Zcl, + "[clearCredential] Unable to allocate the buffer for credentials " + "[endpointId=%d,credentialType=%u,credentialIndex=%d,modifier=%d,userIndex=%d,credentialsCount=%u]", + endpointId, to_underlying(credentialType), credentialIndex, modifier, relatedUserIndex, + static_cast(relatedUser.credentials.size())); + return EMBER_ZCL_STATUS_FAILURE; + } + size_t newCredentialsCount = 0; for (const auto & c : relatedUser.credentials) { @@ -2396,7 +2457,7 @@ EmberAfStatus DoorLockServer::clearCredential(chip::EndpointId endpointId, chip: if (!emberAfPluginDoorLockSetUser(endpointId, relatedUserIndex, relatedUser.createdBy, modifier, relatedUser.userName, relatedUser.userUniqueId, relatedUser.userStatus, relatedUser.userType, - relatedUser.credentialRule, newCredentials, newCredentialsCount)) + relatedUser.credentialRule, newCredentials.Get(), newCredentialsCount)) { ChipLogError(Zcl, "[clearCredential] Unable to clear credential for related user - unable to update database " @@ -2666,8 +2727,8 @@ bool DoorLockServer::HandleRemoteLockOperation(chip::app::CommandHandler * comma } void DoorLockServer::SendLockOperationEvent(chip::EndpointId endpointId, DlLockOperationType opType, DlOperationSource opSource, - DlOperationError opErr, Nullable userId, - Nullable fabricIdx, Nullable nodeId, + DlOperationError opErr, const Nullable & userId, + const Nullable & fabricIdx, const Nullable & nodeId, LockOpCredentials * credList, size_t credListSize, bool opSuccess) { Nullable> credentials{}; @@ -2806,7 +2867,7 @@ bool emberAfDoorLockClusterUnlockWithTimeoutCallback( // This command causes the lock device to unlock the door with a timeout parameter. After the time in seconds specified in // the timeout field, the lock device will relock itself automatically. // field: Timeout, type: uint16_t - uint32_t timeout = static_cast(commandData.timeout); + auto timeout = static_cast(commandData.timeout); VerifyOrReturnError(0 != timeout, true); DoorLockServer::Instance().ScheduleAutoRelock(commandPath.mEndpointId, timeout); @@ -3170,8 +3231,9 @@ emberAfPluginDoorLockGetCredential(chip::EndpointId endpointId, uint16_t credent } bool __attribute__((weak)) -emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialStatus credentialStatus, - DlCredentialType credentialType, const chip::ByteSpan & credentialData) +emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, chip::FabricIndex creator, + chip::FabricIndex modifier, DlCredentialStatus credentialStatus, DlCredentialType credentialType, + const chip::ByteSpan & credentialData) { return false; } diff --git a/src/app/clusters/door-lock-server/door-lock-server.h b/src/app/clusters/door-lock-server/door-lock-server.h index 01fa48942eb6cc..bf982cc8d6b8f4 100644 --- a/src/app/clusters/door-lock-server/door-lock-server.h +++ b/src/app/clusters/door-lock-server/door-lock-server.h @@ -60,8 +60,6 @@ static constexpr size_t DOOR_LOCK_MAX_USER_NAME_SIZE = 10; /**< Maximum size of static constexpr size_t DOOR_LOCK_USER_NAME_BUFFER_SIZE = DOOR_LOCK_MAX_USER_NAME_SIZE + 1; /**< Maximum size of the user name string (in bytes). */ -static constexpr size_t DOOR_LOCK_MAX_CREDENTIALS_PER_USER = 5; /**< Maximum number of supported credentials by a single user. */ - struct EmberAfPluginDoorLockCredentialInfo; struct EmberAfPluginDoorLockUserInfo; @@ -92,6 +90,7 @@ class DoorLockServer bool GetNumberOfRFIDCredentialsSupported(chip::EndpointId endpointId, uint16_t & numberOfRFIDCredentials); bool GetNumberOfWeekDaySchedulesPerUserSupported(chip::EndpointId endpointId, uint8_t & numberOfWeekDaySchedulesPerUser); bool GetNumberOfYearDaySchedulesPerUserSupported(chip::EndpointId endpointId, uint8_t & numberOfYearDaySchedulesPerUser); + bool GetNumberOfCredentialsSupportedPerUser(chip::EndpointId endpointId, uint8_t & numberOfCredentialsSupportedPerUser); void SetUserCommandHandler(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::DoorLock::Commands::SetUser::DecodableType & commandData); @@ -209,8 +208,8 @@ class DoorLockServer DlStatus createCredential(chip::EndpointId endpointId, chip::FabricIndex creatorFabricIdx, chip::NodeId sourceNodeId, uint16_t credentialIndex, DlCredentialType credentialType, const EmberAfPluginDoorLockCredentialInfo & existingCredential, const chip::ByteSpan & credentialData, - Nullable userIndex, Nullable userStatus, Nullable userType, - uint16_t & createdUserIndex); + Nullable userIndex, const Nullable & userStatus, + Nullable userType, uint16_t & createdUserIndex); DlStatus modifyProgrammingPIN(chip::EndpointId endpointId, chip::FabricIndex modifierFabricIndex, chip::NodeId sourceNodeId, uint16_t credentialIndex, DlCredentialType credentialType, const EmberAfPluginDoorLockCredentialInfo & existingCredential, @@ -218,7 +217,7 @@ class DoorLockServer DlStatus modifyCredential(chip::EndpointId endpointId, chip::FabricIndex modifierFabricIndex, chip::NodeId sourceNodeId, uint16_t credentialIndex, DlCredentialType credentialType, const EmberAfPluginDoorLockCredentialInfo & existingCredential, const chip::ByteSpan & credentialData, - uint16_t userIndex, Nullable userStatus, Nullable userType); + uint16_t userIndex, const Nullable & userStatus, Nullable userType); EmberAfStatus clearCredential(chip::EndpointId endpointId, chip::FabricIndex modifier, chip::NodeId sourceNodeId, DlCredentialType credentialType, uint16_t credentialIndex, bool sendUserChangeEvent); @@ -288,9 +287,9 @@ class DoorLockServer * @param opSuccess flags if operation was successfull or not */ void SendLockOperationEvent(chip::EndpointId endpointId, DlLockOperationType opType, DlOperationSource opSource, - DlOperationError opErr, Nullable userId, Nullable fabricIdx, - Nullable nodeId, LockOpCredentials * credList, size_t credListSize, - bool opSuccess = true); + DlOperationError opErr, const Nullable & userId, + const Nullable & fabricIdx, const Nullable & nodeId, + LockOpCredentials * credList, size_t credListSize, bool opSuccess = true); /** * @brief Schedule auto relocking with a given timeout @@ -374,9 +373,11 @@ enum class DlCredentialStatus : uint8_t */ struct EmberAfPluginDoorLockCredentialInfo { - DlCredentialStatus status; /**< Indicates if credential slot is occupied or not. */ - DlCredentialType credentialType; /**< Specifies the type of the credential (PIN, RFID, etc.). */ - chip::ByteSpan credentialData; /**< Credential data bytes. */ + DlCredentialStatus status; /**< Indicates if credential slot is occupied or not. */ + DlCredentialType credentialType; /**< Specifies the type of the credential (PIN, RFID, etc.). */ + chip::ByteSpan credentialData; /**< Credential data bytes. */ + chip::FabricIndex createdBy; /**< ID of the fabric that created the user. */ + chip::FabricIndex lastModifiedBy; /**< ID of the fabric that modified the user. */ }; /** @@ -717,6 +718,8 @@ bool emberAfPluginDoorLockGetCredential(chip::EndpointId endpointId, uint16_t cr * @param credentialIndex Index of the credential to access. It is guaranteed to be within limits declared in the spec for * particular credential type. Starts from 1 for all credential types except Programming PIN -- in that case * it could only be equal to 0. + * @param creator Fabric ID that created the user. Could be kUndefinedFabricIndex (0). + * @param modifier Fabric ID that was last to modify the user. Could be kUndefinedFabricIndex (0). * @param credentialStatus New status of the credential slot (occupied/available). DlCredentialStatus::kAvailable means that the * credential must be deleted. * @param credentialType Type of the credential (PIN, RFID, etc.). @@ -726,5 +729,6 @@ bool emberAfPluginDoorLockGetCredential(chip::EndpointId endpointId, uint16_t cr * @retval true, if credential pointed by \p credentialIndex of type \p credentialType was successfully changed in the database. * @retval false, if error occurred. */ -bool emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, DlCredentialStatus credentialStatus, +bool emberAfPluginDoorLockSetCredential(chip::EndpointId endpointId, uint16_t credentialIndex, chip::FabricIndex creator, + chip::FabricIndex modifier, DlCredentialStatus credentialStatus, DlCredentialType credentialType, const chip::ByteSpan & credentialData); diff --git a/src/app/tests/suites/DL_UsersAndCredentials.yaml b/src/app/tests/suites/DL_UsersAndCredentials.yaml index 50c6d356f01f56..8c4058d5793744 100644 --- a/src/app/tests/suites/DL_UsersAndCredentials.yaml +++ b/src/app/tests/suites/DL_UsersAndCredentials.yaml @@ -787,6 +787,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 2 @@ -879,6 +883,10 @@ tests: value: true - name: "userIndex" value: 1 + - name: "creatorFabricIndex" + value: 1 + - name: "lastModifiedFabricIndex" + value: 1 - name: "nextCredentialIndex" value: 2 @@ -979,6 +987,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 3 @@ -1053,6 +1065,10 @@ tests: value: true - name: "userIndex" value: 1 + - name: "creatorFabricIndex" + value: 1 + - name: "lastModifiedFabricIndex" + value: 1 - name: "nextCredentialIndex" value: 3 @@ -1113,32 +1129,6 @@ tests: - name: "nextCredentialIndex" value: null - - label: "Create new PIN credential and try to add it to existing user" - command: "SetCredential" - timedInteractionTimeoutMs: 10000 - arguments: - values: - - name: "operationType" - value: 0 - - name: "credential" - value: { CredentialType: 1, CredentialIndex: 3 } - - name: "credentialData" - value: "123465" - - name: "userIndex" - value: 1 - - name: "userStatus" - value: null - - name: "userType" - value: null - response: - values: - - name: "status" - value: 0x03 - - name: "userIndex" - value: null - - name: "nextCredentialIndex" - value: 4 - - label: "Create new credential and try to add it to 0 user" command: "SetCredential" timedInteractionTimeoutMs: 10000 @@ -1459,6 +1449,130 @@ tests: # Index = 1, Credentials = {(1, PIN), (2, RFID)} # Index = 2, Credentials = {(3, PIN)} + # Add additional RFID and PIN credentials to the user to make sure that we can have distinct credentials + # of the same type + + - label: "Create new RFID credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 2, CredentialIndex: 4 } + - name: "credentialData" + value: "rfid_data_7890" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 5 + + - label: "Verify modified user" + command: "GetUser" + arguments: + values: + - name: "userIndex" + value: 1 + response: + values: + - name: "userIndex" + value: 1 + - name: "userName" + value: "" + - name: "userUniqueId" + value: null + - name: "userStatus" + value: 1 + - name: "userType" + value: 0 + - name: "credentialRule" + value: 0 + - name: "credentials" + value: + [ + { CredentialType: 1, CredentialIndex: 1 }, + { CredentialType: 2, CredentialIndex: 2 }, + { CredentialType: 2, CredentialIndex: 4 }, + ] + - name: "creatorFabricIndex" + value: 1 + - name: "lastModifiedFabricIndex" + value: 1 + - name: "nextUserIndex" + value: 3 + + - label: "Create new RFID credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 5 } + - name: "credentialData" + value: "789012" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 6 + + - label: "Verify modified user" + command: "GetUser" + arguments: + values: + - name: "userIndex" + value: 1 + response: + values: + - name: "userIndex" + value: 1 + - name: "userName" + value: "" + - name: "userUniqueId" + value: null + - name: "userStatus" + value: 1 + - name: "userType" + value: 0 + - name: "credentialRule" + value: 0 + - name: "credentials" + value: + [ + { CredentialType: 1, CredentialIndex: 1 }, + { CredentialType: 2, CredentialIndex: 2 }, + { CredentialType: 2, CredentialIndex: 4 }, + { CredentialType: 1, CredentialIndex: 5 }, + ] + - name: "creatorFabricIndex" + value: 1 + - name: "lastModifiedFabricIndex" + value: 1 + - name: "nextUserIndex" + value: 3 + - label: "Clear first PIN credential" command: "ClearCredential" timedInteractionTimeoutMs: 10000 @@ -1479,8 +1593,12 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" - value: 4 + value: 6 - label: "Read the user back and make sure PIN credential is deleted" command: "GetUser" @@ -1503,7 +1621,12 @@ tests: - name: "credentialRule" value: 0 - name: "credentials" - value: [{ CredentialType: 2, CredentialIndex: 2 }] + value: + [ + { CredentialType: 2, CredentialIndex: 2 }, + { CredentialType: 2, CredentialIndex: 4 }, + { CredentialType: 1, CredentialIndex: 5 }, + ] - name: "creatorFabricIndex" value: 1 - name: "lastModifiedFabricIndex" @@ -1531,8 +1654,12 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" - value: 4 + value: 6 - label: "Read the user back and make sure related user is deleted" command: "GetUser" @@ -1609,6 +1736,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 2 @@ -1624,12 +1755,35 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 3 + - label: "Read back the third RFID credential and make sure it is deleted" + command: "GetCredentialStatus" + arguments: + values: + - name: "credential" + value: { CredentialType: 2, CredentialIndex: 4 } + response: + values: + - name: "credentialExists" + value: false + - name: "userIndex" + value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null + - name: "nextCredentialIndex" + value: 6 + - label: - "Read the user related with first RFID back and make sure it is - deleted" + "Read the user related with first RFID back and make sure it has only + PIN credential" command: "GetUser" arguments: values: @@ -1640,21 +1794,21 @@ tests: - name: "userIndex" value: 1 - name: "userName" - value: null + value: "" - name: "userUniqueId" value: null - name: "userStatus" - value: null + value: 1 - name: "userType" - value: null + value: 0 - name: "credentialRule" - value: null + value: 0 - name: "credentials" - value: null + value: [{ CredentialType: 1, CredentialIndex: 5 }] - name: "creatorFabricIndex" - value: null + value: 1 - name: "lastModifiedFabricIndex" - value: null + value: 1 - name: "nextUserIndex" value: 2 @@ -1711,7 +1865,7 @@ tests: - name: "status" value: 0x00 - name: "userIndex" - value: 1 + value: 2 - name: "nextCredentialIndex" value: 2 @@ -1737,7 +1891,7 @@ tests: - name: "status" value: 0x00 - name: "userIndex" - value: 2 + value: 3 - name: "nextCredentialIndex" value: 3 @@ -1763,7 +1917,7 @@ tests: - name: "status" value: 0x00 - name: "userIndex" - value: 3 + value: 4 - name: "nextCredentialIndex" value: 7 @@ -1789,6 +1943,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 2 @@ -1804,6 +1962,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 3 @@ -1819,6 +1981,10 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: 7 @@ -1914,6 +2080,36 @@ tests: - name: "nextUserIndex" value: 4 + - label: + "Read the user related with last RFID back and make sure it is deleted" + command: "GetUser" + arguments: + values: + - name: "userIndex" + value: 4 + response: + values: + - name: "userIndex" + value: 4 + - 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: 5 + - label: "Create new Programming PIN credential with invalid index" command: "SetCredential" timedInteractionTimeoutMs: 10000 @@ -2007,6 +2203,10 @@ tests: value: true - name: "userIndex" value: 1 + - name: "creatorFabricIndex" + value: 1 + - name: "lastModifiedFabricIndex" + value: 1 - name: "nextCredentialIndex" value: null @@ -2154,5 +2354,166 @@ tests: value: false - name: "userIndex" value: null + - name: "creatorFabricIndex" + value: null + - name: "lastModifiedFabricIndex" + value: null - name: "nextCredentialIndex" value: null + + # Test to make sure it's impossible to add more than NumberOfCredentialsSupportedPerUser credentials to a single user + - label: "Create new PIN credential and user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 1 } + - name: "credentialData" + value: "000000" + - name: "userIndex" + value: null + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: 1 + - name: "nextCredentialIndex" + value: 2 + + - label: "Create second PIN credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 2 } + - name: "credentialData" + value: "000001" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 3 + + - label: "Create third PIN credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 3 } + - name: "credentialData" + value: "000002" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 4 + + - label: "Create fourth PIN credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 4 } + - name: "credentialData" + value: "000003" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 5 + + - label: "Create fifth PIN credential and add it to existing user" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 5 } + - name: "credentialData" + value: "000004" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x00 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 6 + + - label: "Try to create sixth PIN credential and make sure it fails" + command: "SetCredential" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "operationType" + value: 0 + - name: "credential" + value: { CredentialType: 1, CredentialIndex: 6 } + - name: "credentialData" + value: "000005" + - name: "userIndex" + value: 1 + - name: "userStatus" + value: null + - name: "userType" + value: null + response: + values: + - name: "status" + value: 0x89 + - name: "userIndex" + value: null + - name: "nextCredentialIndex" + value: 7 diff --git a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml index bd05cae4f1e937..cb824c9243d911 100644 --- a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml @@ -110,6 +110,8 @@ limitations under the License. MinRFIDCodeLength CredentialRulesSupport + + NumberOfCredentialsSupportedPerUser EnableLogging @@ -247,7 +249,6 @@ limitations under the License. - This command causes the lock device to lock the door. @@ -589,6 +590,8 @@ limitations under the License. + + @@ -954,6 +957,7 @@ limitations under the License. + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 7190bb67b313d5..9e8b87c11eb8ea 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -1183,6 +1183,7 @@ client cluster DoorLock = 257 { kDuplicate = 2; kOccupied = 3; kInvalidField = 133; + kResourceExhausted = 137; kNotFound = 139; } @@ -1460,6 +1461,7 @@ client cluster DoorLock = 257 { readonly attribute int8u minPINCodeLength = 24; readonly attribute int8u maxRFIDCodeLength = 25; readonly attribute int8u minRFIDCodeLength = 26; + readonly attribute int8u numberOfCredentialsSupportedPerUser = 28; attribute access(write: manage) char_string<3> language = 33; attribute access(write: manage) int32u autoRelockTime = 35; attribute access(write: manage) int8u soundVolume = 36; @@ -1629,7 +1631,9 @@ client cluster DoorLock = 257 { response struct GetCredentialStatusResponse = 37 { boolean credentialExists = 0; nullable INT16U userIndex = 1; - nullable INT16U nextCredentialIndex = 2; + nullable fabric_idx creatorFabricIndex = 2; + nullable fabric_idx lastModifiedFabricIndex = 3; + nullable INT16U nextCredentialIndex = 4; } timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index 96a0191fe00b7d..4d39c85275897f 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -9865,6 +9865,22 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "NumberOfCredentialsSupportedPerUser", + "code": 28, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "EnableLogging", "code": 32, diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index cad410356049a9..98a15cb82729dc 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -4665,6 +4665,21 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR cppValue, value); return value; } + case Attributes::NumberOfCredentialsSupportedPerUser::Id: { + using TypeInfo = Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + std::string valueClassName = "java/lang/Integer"; + std::string valueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + cppValue, value); + return value; + } case Attributes::Language::Id: { using TypeInfo = Attributes::Language::TypeInfo; TypeInfo::DecodableType cppValue; diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h index a3bd9e35777dd5..faf0938382c81d 100644 --- a/src/controller/java/zap-generated/CHIPCallbackTypes.h +++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h @@ -489,6 +489,8 @@ typedef void (*CHIPDoorLockClusterMaxRFIDCodeLengthAttributeCallbackType)( void *, chip::app::Clusters::DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo::DecodableArgType); typedef void (*CHIPDoorLockClusterMinRFIDCodeLengthAttributeCallbackType)( void *, chip::app::Clusters::DoorLock::Attributes::MinRFIDCodeLength::TypeInfo::DecodableArgType); +typedef void (*CHIPDoorLockClusterNumberOfCredentialsSupportedPerUserAttributeCallbackType)( + void *, chip::app::Clusters::DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo::DecodableArgType); typedef void (*CHIPDoorLockClusterLanguageAttributeCallbackType)( void *, chip::app::Clusters::DoorLock::Attributes::Language::TypeInfo::DecodableArgType); typedef void (*CHIPDoorLockClusterAutoRelockTimeAttributeCallbackType)( diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp index 61111bd89a91be..26a5f3a9c98474 100644 --- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp @@ -422,8 +422,9 @@ void CHIPDoorLockClusterGetCredentialStatusResponseCallback::CallbackFn( // Java callback is allowed to be null, exit early if this is the case. VerifyOrReturn(javaCallbackRef != nullptr); - err = JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", - "(Ljava/lang/Boolean;Ljava/lang/Integer;Ljava/lang/Integer;)V", &javaMethod); + err = JniReferences::GetInstance().FindMethod( + env, javaCallbackRef, "onSuccess", + "(Ljava/lang/Boolean;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)V", &javaMethod); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error invoking Java callback: %s", ErrorStr(err))); jobject credentialExists; @@ -443,6 +444,32 @@ void CHIPDoorLockClusterGetCredentialStatusResponseCallback::CallbackFn( chip::JniReferences::GetInstance().CreateBoxedObject(userIndexClassName.c_str(), userIndexCtorSignature.c_str(), dataResponse.userIndex.Value(), userIndex); } + jobject creatorFabricIndex; + if (dataResponse.creatorFabricIndex.IsNull()) + { + creatorFabricIndex = nullptr; + } + else + { + std::string creatorFabricIndexClassName = "java/lang/Integer"; + std::string creatorFabricIndexCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(creatorFabricIndexClassName.c_str(), + creatorFabricIndexCtorSignature.c_str(), + dataResponse.creatorFabricIndex.Value(), creatorFabricIndex); + } + jobject lastModifiedFabricIndex; + if (dataResponse.lastModifiedFabricIndex.IsNull()) + { + lastModifiedFabricIndex = nullptr; + } + else + { + std::string lastModifiedFabricIndexClassName = "java/lang/Integer"; + std::string lastModifiedFabricIndexCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject( + lastModifiedFabricIndexClassName.c_str(), lastModifiedFabricIndexCtorSignature.c_str(), + dataResponse.lastModifiedFabricIndex.Value(), lastModifiedFabricIndex); + } jobject nextCredentialIndex; if (dataResponse.nextCredentialIndex.IsNull()) { @@ -457,7 +484,8 @@ void CHIPDoorLockClusterGetCredentialStatusResponseCallback::CallbackFn( dataResponse.nextCredentialIndex.Value(), nextCredentialIndex); } - env->CallVoidMethod(javaCallbackRef, javaMethod, credentialExists, userIndex, nextCredentialIndex); + env->CallVoidMethod(javaCallbackRef, javaMethod, credentialExists, userIndex, creatorFabricIndex, lastModifiedFabricIndex, + nextCredentialIndex); } CHIPDoorLockClusterGetHolidayScheduleResponseCallback::CHIPDoorLockClusterGetHolidayScheduleResponseCallback(jobject javaCallback) : Callback::Callback(CallbackFn, this) diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index f37efa633fb75b..763ac19fcab110 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -6321,6 +6321,8 @@ public interface GetCredentialStatusResponseCallback { void onSuccess( Boolean credentialExists, @Nullable Integer userIndex, + @Nullable Integer creatorFabricIndex, + @Nullable Integer lastModifiedFabricIndex, @Nullable Integer nextCredentialIndex); void onError(Exception error); @@ -6559,6 +6561,17 @@ public void subscribeMinRFIDCodeLengthAttribute( subscribeMinRFIDCodeLengthAttribute(chipClusterPtr, callback, minInterval, maxInterval); } + public void readNumberOfCredentialsSupportedPerUserAttribute( + IntegerAttributeCallback callback) { + readNumberOfCredentialsSupportedPerUserAttribute(chipClusterPtr, callback); + } + + public void subscribeNumberOfCredentialsSupportedPerUserAttribute( + IntegerAttributeCallback callback, int minInterval, int maxInterval) { + subscribeNumberOfCredentialsSupportedPerUserAttribute( + chipClusterPtr, callback, minInterval, maxInterval); + } + public void readLanguageAttribute(CharStringAttributeCallback callback) { readLanguageAttribute(chipClusterPtr, callback); } @@ -6852,6 +6865,12 @@ private native void readMinRFIDCodeLengthAttribute( private native void subscribeMinRFIDCodeLengthAttribute( long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + private native void readNumberOfCredentialsSupportedPerUserAttribute( + long chipClusterPtr, IntegerAttributeCallback callback); + + private native void subscribeNumberOfCredentialsSupportedPerUserAttribute( + long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + private native void readLanguageAttribute( long chipClusterPtr, CharStringAttributeCallback callback); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java index f3fdffaa90f5ae..22e22936d8600d 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java @@ -919,6 +919,9 @@ public static String attributeIdToName(long clusterId, long attributeId) { if (attributeId == 26L) { return "MinRFIDCodeLength"; } + if (attributeId == 28L) { + return "NumberOfCredentialsSupportedPerUser"; + } if (attributeId == 33L) { return "Language"; } diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java index b4ae15ef4fb6c2..0c8c80cf65fd79 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java @@ -2018,6 +2018,8 @@ public void setCallbackDelegate(ClusterCommandCallback callback) { public void onSuccess( Boolean credentialExists, @Nullable Integer userIndex, + @Nullable Integer creatorFabricIndex, + @Nullable Integer lastModifiedFabricIndex, @Nullable Integer nextCredentialIndex) { Map responseValues = new LinkedHashMap<>(); CommandResponseInfo credentialExistsResponseValue = @@ -2025,6 +2027,12 @@ public void onSuccess( responseValues.put(credentialExistsResponseValue, credentialExists); CommandResponseInfo userIndexResponseValue = new CommandResponseInfo("userIndex", "Integer"); responseValues.put(userIndexResponseValue, userIndex); + CommandResponseInfo creatorFabricIndexResponseValue = + new CommandResponseInfo("creatorFabricIndex", "Integer"); + responseValues.put(creatorFabricIndexResponseValue, creatorFabricIndex); + CommandResponseInfo lastModifiedFabricIndexResponseValue = + new CommandResponseInfo("lastModifiedFabricIndex", "Integer"); + responseValues.put(lastModifiedFabricIndexResponseValue, lastModifiedFabricIndex); CommandResponseInfo nextCredentialIndexResponseValue = new CommandResponseInfo("nextCredentialIndex", "Integer"); responseValues.put(nextCredentialIndexResponseValue, nextCredentialIndex); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java index 08984c7c335d86..382a9aaec91352 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java @@ -2910,6 +2910,20 @@ public Map> getReadAttributeMap() { readDoorLockMinRFIDCodeLengthCommandParams); readDoorLockInteractionInfo.put( "readMinRFIDCodeLengthAttribute", readDoorLockMinRFIDCodeLengthAttributeInteractionInfo); + Map readDoorLockNumberOfCredentialsSupportedPerUserCommandParams = + new LinkedHashMap(); + InteractionInfo readDoorLockNumberOfCredentialsSupportedPerUserAttributeInteractionInfo = + new InteractionInfo( + (cluster, callback, commandArguments) -> { + ((ChipClusters.DoorLockCluster) cluster) + .readNumberOfCredentialsSupportedPerUserAttribute( + (ChipClusters.IntegerAttributeCallback) callback); + }, + () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(), + readDoorLockNumberOfCredentialsSupportedPerUserCommandParams); + readDoorLockInteractionInfo.put( + "readNumberOfCredentialsSupportedPerUserAttribute", + readDoorLockNumberOfCredentialsSupportedPerUserAttributeInteractionInfo); Map readDoorLockLanguageCommandParams = new LinkedHashMap(); InteractionInfo readDoorLockLanguageAttributeInteractionInfo = diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index c15a0ea54f85ae..483b060c9b45e4 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -2096,6 +2096,12 @@ class ChipClusters: "type": "int", "reportable": True, }, + 0x0000001C: { + "attributeName": "NumberOfCredentialsSupportedPerUser", + "attributeId": 0x0000001C, + "type": "int", + "reportable": True, + }, 0x00000021: { "attributeName": "Language", "attributeId": 0x00000021, diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 0d10f97f0ed423..f8bea1b677e4e0 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -16186,6 +16186,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="maxRFIDCodeLength", Tag=0x00000019, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="minRFIDCodeLength", Tag=0x0000001A, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="credentialRulesSupport", Tag=0x0000001B, Type=typing.Optional[uint]), + ClusterObjectFieldDescriptor(Label="numberOfCredentialsSupportedPerUser", Tag=0x0000001C, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="enableLogging", Tag=0x00000020, Type=typing.Optional[bool]), ClusterObjectFieldDescriptor(Label="language", Tag=0x00000021, Type=typing.Optional[str]), ClusterObjectFieldDescriptor(Label="LEDSettings", Tag=0x00000022, Type=typing.Optional[uint]), @@ -16238,6 +16239,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: maxRFIDCodeLength: 'typing.Optional[uint]' = None minRFIDCodeLength: 'typing.Optional[uint]' = None credentialRulesSupport: 'typing.Optional[uint]' = None + numberOfCredentialsSupportedPerUser: 'typing.Optional[uint]' = None enableLogging: 'typing.Optional[bool]' = None language: 'typing.Optional[str]' = None LEDSettings: 'typing.Optional[uint]' = None @@ -16374,6 +16376,7 @@ class DlStatus(IntEnum): kDuplicate = 0x02 kOccupied = 0x03 kInvalidField = 0x85 + kResourceExhausted = 0x89 kNotFound = 0x8B class DlUserStatus(IntEnum): @@ -17319,11 +17322,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: Fields = [ ClusterObjectFieldDescriptor(Label="credentialExists", Tag=0, Type=bool), ClusterObjectFieldDescriptor(Label="userIndex", Tag=1, Type=typing.Union[Nullable, uint]), - ClusterObjectFieldDescriptor(Label="nextCredentialIndex", Tag=2, Type=typing.Union[Nullable, uint]), + ClusterObjectFieldDescriptor(Label="creatorFabricIndex", Tag=2, Type=typing.Union[Nullable, uint]), + ClusterObjectFieldDescriptor(Label="lastModifiedFabricIndex", Tag=3, Type=typing.Union[Nullable, uint]), + ClusterObjectFieldDescriptor(Label="nextCredentialIndex", Tag=4, Type=typing.Union[Nullable, uint]), ]) credentialExists: 'bool' = False userIndex: 'typing.Union[Nullable, uint]' = NullValue + creatorFabricIndex: 'typing.Union[Nullable, uint]' = NullValue + lastModifiedFabricIndex: 'typing.Union[Nullable, uint]' = NullValue nextCredentialIndex: 'typing.Union[Nullable, uint]' = NullValue @dataclass @@ -17651,6 +17658,22 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.Optional[uint]' = None + @dataclass + class NumberOfCredentialsSupportedPerUser(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x0101 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x0000001C + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) + + value: 'typing.Optional[uint]' = None + @dataclass class EnableLogging(ClusterAttributeDescriptor): @ChipUtility.classproperty diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm index 44e2b1fa71d82e..483de5942c055e 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm @@ -4177,6 +4177,17 @@ id CHIPDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader value = [NSNumber numberWithUnsignedChar:cppValue.Raw()]; return value; } + case Attributes::NumberOfCredentialsSupportedPerUser::Id: { + using TypeInfo = Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + NSNumber * _Nonnull value; + value = [NSNumber numberWithUnsignedChar:cppValue]; + return value; + } case Attributes::EnableLogging::Id: { using TypeInfo = Attributes::EnableLogging::TypeInfo; TypeInfo::DecodableType cppValue; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm index 817d2392560743..d4d118b86e6d0f 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm @@ -12001,6 +12001,20 @@ response.userIndex = [NSNumber numberWithUnsignedShort:data.userIndex.Value()]; } } + { + if (data.creatorFabricIndex.IsNull()) { + response.creatorFabricIndex = nil; + } else { + response.creatorFabricIndex = [NSNumber numberWithUnsignedChar:data.creatorFabricIndex.Value()]; + } + } + { + if (data.lastModifiedFabricIndex.IsNull()) { + response.lastModifiedFabricIndex = nil; + } else { + response.lastModifiedFabricIndex = [NSNumber numberWithUnsignedChar:data.lastModifiedFabricIndex.Value()]; + } + } { if (data.nextCredentialIndex.IsNull()) { response.nextCredentialIndex = nil; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h index f1dab3c740d003..e1a4dd097c2b03 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h @@ -4961,6 +4961,25 @@ NS_ASSUME_NONNULL_BEGIN completionHandler: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler; +- (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; +/** + * This API does not support setting autoResubscribe to NO in the + * CHIPSubscribeParams. + */ +- (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler; ++ (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; + - (void)readAttributeEnableLoggingWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler; - (void)writeAttributeEnableLoggingWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; @@ -21946,6 +21965,7 @@ typedef NS_ENUM(uint8_t, CHIPDoorLockDlStatus) { CHIPDoorLockDlStatusDuplicate = 0x02, CHIPDoorLockDlStatusOccupied = 0x03, CHIPDoorLockDlStatusInvalidField = 0x85, + CHIPDoorLockDlStatusResourceExhausted = 0x89, CHIPDoorLockDlStatusNotFound = 0x8B, }; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm index bc89c0ca1e6ecd..285eea4599b044 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm @@ -19672,6 +19672,69 @@ new CHIPDoorLockCredentialRulesSupportAttributeCallbackBridge( }); } +- (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt8uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler +{ + new CHIPInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(Cancelable * success, Cancelable * failure) { + if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, + [minInterval unsignedShortValue], [maxInterval unsignedShortValue], + CHIPInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], + params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); + }, + subscriptionEstablishedHandler); +} + ++ (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt8uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + auto successFn = Callback::FromCancelable(success); + if (err == CHIP_NO_ERROR) { + successFn->mCall(successFn->mContext, value); + } + return err; + } + return CHIP_ERROR_NOT_FOUND; + }); +} + - (void)readAttributeEnableLoggingWithCompletionHandler:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completionHandler { diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.h index 3502942201ed46..b6c7b12d29b08d 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.h @@ -4563,6 +4563,10 @@ NS_ASSUME_NONNULL_BEGIN @property (strong, nonatomic) NSNumber * _Nullable userIndex; +@property (strong, nonatomic) NSNumber * _Nullable creatorFabricIndex; + +@property (strong, nonatomic) NSNumber * _Nullable lastModifiedFabricIndex; + @property (strong, nonatomic) NSNumber * _Nullable nextCredentialIndex; /** * Controls whether the command is a timed command (using Timed Invoke). diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.mm index 50a521fcc819f5..1c49bbc4a213f6 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCommandPayloadsObjc.mm @@ -2642,6 +2642,10 @@ - (instancetype)init _userIndex = nil; + _creatorFabricIndex = nil; + + _lastModifiedFabricIndex = nil; + _nextCredentialIndex = nil; _timedInvokeTimeoutMs = nil; } diff --git a/src/darwin/Framework/CHIP/zap-generated/MatterClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MatterClusterConstants.h index 8eb2995c6575d7..501887adc525a1 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MatterClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MatterClusterConstants.h @@ -880,6 +880,7 @@ typedef NS_ENUM(uint32_t, MatterClusterAttributeIDType) { kMatterClusterDoorLockAttributeMaxRFIDCodeLengthID = 0x00000019, kMatterClusterDoorLockAttributeMinRFIDCodeLengthID = 0x0000001A, kMatterClusterDoorLockAttributeCredentialRulesSupportID = 0x0000001B, + kMatterClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID = 0x0000001C, kMatterClusterDoorLockAttributeEnableLoggingID = 0x00000020, kMatterClusterDoorLockAttributeLanguageID = 0x00000021, kMatterClusterDoorLockAttributeLEDSettingsID = 0x00000022, diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 4a06756f344352..2ebe66e31c5102 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -964,7 +964,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 663 +#define GENERATED_ATTRIBUTE_COUNT 664 #define GENERATED_ATTRIBUTES \ { \ \ @@ -1445,6 +1445,7 @@ { 0x00000019, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(20) }, /* MaxRFIDCodeLength */ \ { 0x0000001A, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(10) }, /* MinRFIDCodeLength */ \ { 0x0000001B, ZAP_TYPE(BITMAP8), 1, 0, ZAP_SIMPLE_DEFAULT(1) }, /* CredentialRulesSupport */ \ + { 0x0000001C, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(5) }, /* NumberOfCredentialsSupportedPerUser */ \ { 0x00000021, ZAP_TYPE(CHAR_STRING), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(276) }, /* Language */ \ { 0x00000023, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(279) }, /* AutoRelockTime */ \ { 0x00000024, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -2927,8 +2928,8 @@ /* Endpoint: 1, Cluster: Door Lock (server) */ \ .clusterId = 0x00000101, \ .attributes = ZAP_ATTRIBUTE_INDEX(290), \ - .attributeCount = 32, \ - .clusterSize = 54, \ + .attributeCount = 33, \ + .clusterSize = 55, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayDoorLockServer, \ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 131 ) ,\ @@ -2937,7 +2938,7 @@ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(322), \ + .attributes = ZAP_ATTRIBUTE_INDEX(323), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2948,7 +2949,7 @@ { \ /* Endpoint: 1, Cluster: Barrier Control (server) */ \ .clusterId = 0x00000103, \ - .attributes = ZAP_ATTRIBUTE_INDEX(342), \ + .attributes = ZAP_ATTRIBUTE_INDEX(343), \ .attributeCount = 5, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2959,7 +2960,7 @@ { \ /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(347), \ + .attributes = ZAP_ATTRIBUTE_INDEX(348), \ .attributeCount = 26, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2970,7 +2971,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(373), \ + .attributes = ZAP_ATTRIBUTE_INDEX(374), \ .attributeCount = 19, \ .clusterSize = 34, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2981,7 +2982,7 @@ { \ /* Endpoint: 1, Cluster: Fan Control (server) */ \ .clusterId = 0x00000202, \ - .attributes = ZAP_ATTRIBUTE_INDEX(392), \ + .attributes = ZAP_ATTRIBUTE_INDEX(393), \ .attributeCount = 13, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2992,7 +2993,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(405), \ + .attributes = ZAP_ATTRIBUTE_INDEX(406), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -3003,7 +3004,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(409), \ + .attributes = ZAP_ATTRIBUTE_INDEX(410), \ .attributeCount = 54, \ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3014,7 +3015,7 @@ { \ /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(463), \ + .attributes = ZAP_ATTRIBUTE_INDEX(464), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3025,7 +3026,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(469), \ + .attributes = ZAP_ATTRIBUTE_INDEX(470), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3036,7 +3037,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(474), \ + .attributes = ZAP_ATTRIBUTE_INDEX(475), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3047,7 +3048,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(478), \ + .attributes = ZAP_ATTRIBUTE_INDEX(479), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3058,7 +3059,7 @@ { \ /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(483), \ + .attributes = ZAP_ATTRIBUTE_INDEX(484), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3069,7 +3070,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(488), \ + .attributes = ZAP_ATTRIBUTE_INDEX(489), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3080,7 +3081,7 @@ { \ /* Endpoint: 1, Cluster: IAS Zone (server) */ \ .clusterId = 0x00000500, \ - .attributes = ZAP_ATTRIBUTE_INDEX(492), \ + .attributes = ZAP_ATTRIBUTE_INDEX(493), \ .attributeCount = 6, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \ @@ -3091,7 +3092,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(498), \ + .attributes = ZAP_ATTRIBUTE_INDEX(499), \ .attributeCount = 2, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3102,7 +3103,7 @@ { \ /* Endpoint: 1, Cluster: Channel (server) */ \ .clusterId = 0x00000504, \ - .attributes = ZAP_ATTRIBUTE_INDEX(500), \ + .attributes = ZAP_ATTRIBUTE_INDEX(501), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3113,7 +3114,7 @@ { \ /* Endpoint: 1, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(502), \ + .attributes = ZAP_ATTRIBUTE_INDEX(503), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3124,7 +3125,7 @@ { \ /* Endpoint: 1, Cluster: Media Playback (server) */ \ .clusterId = 0x00000506, \ - .attributes = ZAP_ATTRIBUTE_INDEX(505), \ + .attributes = ZAP_ATTRIBUTE_INDEX(506), \ .attributeCount = 7, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3135,7 +3136,7 @@ { \ /* Endpoint: 1, Cluster: Media Input (server) */ \ .clusterId = 0x00000507, \ - .attributes = ZAP_ATTRIBUTE_INDEX(512), \ + .attributes = ZAP_ATTRIBUTE_INDEX(513), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3146,7 +3147,7 @@ { \ /* Endpoint: 1, Cluster: Low Power (server) */ \ .clusterId = 0x00000508, \ - .attributes = ZAP_ATTRIBUTE_INDEX(515), \ + .attributes = ZAP_ATTRIBUTE_INDEX(516), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3157,7 +3158,7 @@ { \ /* Endpoint: 1, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(516), \ + .attributes = ZAP_ATTRIBUTE_INDEX(517), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3168,7 +3169,7 @@ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(517), \ + .attributes = ZAP_ATTRIBUTE_INDEX(518), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3179,7 +3180,7 @@ { \ /* Endpoint: 1, Cluster: Audio Output (server) */ \ .clusterId = 0x0000050B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(520), \ + .attributes = ZAP_ATTRIBUTE_INDEX(521), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3190,7 +3191,7 @@ { \ /* Endpoint: 1, Cluster: Application Launcher (server) */ \ .clusterId = 0x0000050C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(523), \ + .attributes = ZAP_ATTRIBUTE_INDEX(524), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3201,7 +3202,7 @@ { \ /* Endpoint: 1, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(525), \ + .attributes = ZAP_ATTRIBUTE_INDEX(526), \ .attributeCount = 8, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3212,7 +3213,7 @@ { \ /* Endpoint: 1, Cluster: Account Login (server) */ \ .clusterId = 0x0000050E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(533), \ + .attributes = ZAP_ATTRIBUTE_INDEX(534), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3223,7 +3224,7 @@ { \ /* Endpoint: 1, Cluster: Test Cluster (server) */ \ .clusterId = 0x0000050F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(534), \ + .attributes = ZAP_ATTRIBUTE_INDEX(535), \ .attributeCount = 81, \ .clusterSize = 2285, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3234,7 +3235,7 @@ { \ /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \ .clusterId = 0x00000B04, \ - .attributes = ZAP_ATTRIBUTE_INDEX(615), \ + .attributes = ZAP_ATTRIBUTE_INDEX(616), \ .attributeCount = 12, \ .clusterSize = 28, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3245,7 +3246,7 @@ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(627), \ + .attributes = ZAP_ATTRIBUTE_INDEX(628), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3256,7 +3257,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(629), \ + .attributes = ZAP_ATTRIBUTE_INDEX(630), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3267,7 +3268,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(636), \ + .attributes = ZAP_ATTRIBUTE_INDEX(637), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3278,7 +3279,7 @@ { \ /* Endpoint: 2, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(641), \ + .attributes = ZAP_ATTRIBUTE_INDEX(642), \ .attributeCount = 8, \ .clusterSize = 72, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3289,7 +3290,7 @@ { \ /* Endpoint: 2, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(649), \ + .attributes = ZAP_ATTRIBUTE_INDEX(650), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3300,7 +3301,7 @@ { \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(653), \ + .attributes = ZAP_ATTRIBUTE_INDEX(654), \ .attributeCount = 10, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3319,7 +3320,7 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 27, 522 }, { ZAP_CLUSTER_INDEX(27), 45, 3338 }, { ZAP_CLUSTER_INDEX(72), 5, 93 }, \ + { ZAP_CLUSTER_INDEX(0), 27, 522 }, { ZAP_CLUSTER_INDEX(27), 45, 3339 }, { ZAP_CLUSTER_INDEX(72), 5, 93 }, \ { ZAP_CLUSTER_INDEX(77), 1, 0 }, \ } @@ -3332,7 +3333,7 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, #define ATTRIBUTE_SINGLETONS_SIZE (37) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (3953) +#define ATTRIBUTE_MAX_SIZE (3954) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (4) diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h index 099f517886e0e0..4213e07e24487b 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h +++ b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h @@ -708,6 +708,7 @@ #define ZCL_MAX_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x0019) #define ZCL_MIN_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x001A) #define ZCL_CREDENTIAL_RULES_SUPPORT_ATTRIBUTE_ID (0x001B) +#define ZCL_NUM_CREDENTIALS_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x001C) #define ZCL_ENABLE_LOGGING_ATTRIBUTE_ID (0x0020) #define ZCL_LANGUAGE_ATTRIBUTE_ID (0x0021) #define ZCL_LED_SETTINGS_ATTRIBUTE_ID (0x0022) diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 9c0090caf84cbd..07cc2a2c187fba 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -14544,6 +14544,37 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitFlags; + Traits::StorageType temp; + uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); + EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::DoorLock::Id, Id, readable, sizeof(temp)); + VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + *value = Traits::StorageToWorking(temp); + return status; +} +EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteServerAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); +} + +} // namespace NumberOfCredentialsSupportedPerUser + namespace EnableLogging { EmberAfStatus Get(chip::EndpointId endpoint, bool * value) diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 7af5e3a658fea8..9db09920be08bc 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -2601,6 +2601,11 @@ EmberAfStatus Get(chip::EndpointId endpoint, EmberAfStatus Set(chip::EndpointId endpoint, chip::BitFlags value); } // namespace CredentialRulesSupport +namespace NumberOfCredentialsSupportedPerUser { +EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value); // int8u +EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value); +} // namespace NumberOfCredentialsSupportedPerUser + namespace EnableLogging { EmberAfStatus Get(chip::EndpointId endpoint, bool * value); // boolean EmberAfStatus Set(chip::EndpointId endpoint, bool value); diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h index 35a697a3b01e62..c8b83639ad4d29 100644 --- a/zzz_generated/app-common/app-common/zap-generated/callback.h +++ b/zzz_generated/app-common/app-common/zap-generated/callback.h @@ -13433,6 +13433,8 @@ bool emberAfDoorLockClusterGetCredentialStatusCallback( */ bool emberAfDoorLockClusterGetCredentialStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, bool credentialExists, uint16_t userIndex, + chip::FabricIndex creatorFabricIndex, + chip::FabricIndex lastModifiedFabricIndex, uint16_t nextCredentialIndex); /** * @brief Door Lock Cluster ClearCredential Command callback (from client) diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index 8309fe4d0a0b22..6d9ea9c1c60861 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -1104,12 +1104,13 @@ enum class DlOperationSource : uint8_t // Enum for DlStatus enum class DlStatus : uint8_t { - kSuccess = 0x00, - kFailure = 0x01, - kDuplicate = 0x02, - kOccupied = 0x03, - kInvalidField = 0x85, - kNotFound = 0x8B, + kSuccess = 0x00, + kFailure = 0x01, + kDuplicate = 0x02, + kOccupied = 0x03, + kInvalidField = 0x85, + kResourceExhausted = 0x89, + kNotFound = 0x8B, }; // Enum for DlUserStatus diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index 4602c3c8be6bfa..82aa5fe51d7806 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -14466,6 +14466,10 @@ CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer)); ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kCredentialExists)), credentialExists)); ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kUserIndex)), userIndex)); + ReturnErrorOnFailure( + DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kCreatorFabricIndex)), creatorFabricIndex)); + ReturnErrorOnFailure( + DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kLastModifiedFabricIndex)), lastModifiedFabricIndex)); ReturnErrorOnFailure( DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kNextCredentialIndex)), nextCredentialIndex)); ReturnErrorOnFailure(writer.EndContainer(outer)); @@ -14492,6 +14496,12 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) case to_underlying(Fields::kUserIndex): ReturnErrorOnFailure(DataModel::Decode(reader, userIndex)); break; + case to_underlying(Fields::kCreatorFabricIndex): + ReturnErrorOnFailure(DataModel::Decode(reader, creatorFabricIndex)); + break; + case to_underlying(Fields::kLastModifiedFabricIndex): + ReturnErrorOnFailure(DataModel::Decode(reader, lastModifiedFabricIndex)); + break; case to_underlying(Fields::kNextCredentialIndex): ReturnErrorOnFailure(DataModel::Decode(reader, nextCredentialIndex)); break; @@ -14606,6 +14616,9 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre case Attributes::CredentialRulesSupport::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, credentialRulesSupport)); break; + case Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, numberOfCredentialsSupportedPerUser)); + break; case Attributes::EnableLogging::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, enableLogging)); break; diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index c452fefa9a7934..6841bfbebc2569 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -19207,9 +19207,11 @@ struct DecodableType namespace GetCredentialStatusResponse { enum class Fields { - kCredentialExists = 0, - kUserIndex = 1, - kNextCredentialIndex = 2, + kCredentialExists = 0, + kUserIndex = 1, + kCreatorFabricIndex = 2, + kLastModifiedFabricIndex = 3, + kNextCredentialIndex = 4, }; struct Type @@ -19221,6 +19223,8 @@ struct Type bool credentialExists = static_cast(0); DataModel::Nullable userIndex; + DataModel::Nullable creatorFabricIndex; + DataModel::Nullable lastModifiedFabricIndex; DataModel::Nullable nextCredentialIndex; CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; @@ -19238,6 +19242,8 @@ struct DecodableType bool credentialExists = static_cast(0); DataModel::Nullable userIndex; + DataModel::Nullable creatorFabricIndex; + DataModel::Nullable lastModifiedFabricIndex; DataModel::Nullable nextCredentialIndex; CHIP_ERROR Decode(TLV::TLVReader & reader); }; @@ -19506,6 +19512,18 @@ struct TypeInfo static constexpr bool MustUseTimedWrite() { return false; } }; } // namespace CredentialRulesSupport +namespace NumberOfCredentialsSupportedPerUser { +struct TypeInfo +{ + using Type = uint8_t; + using DecodableType = uint8_t; + using DecodableArgType = uint8_t; + + static constexpr ClusterId GetClusterId() { return Clusters::DoorLock::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::NumberOfCredentialsSupportedPerUser::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace NumberOfCredentialsSupportedPerUser namespace EnableLogging { struct TypeInfo { @@ -19911,6 +19929,8 @@ struct TypeInfo Attributes::MinRFIDCodeLength::TypeInfo::DecodableType minRFIDCodeLength = static_cast(0); Attributes::CredentialRulesSupport::TypeInfo::DecodableType credentialRulesSupport = static_cast>(0); + Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo::DecodableType numberOfCredentialsSupportedPerUser = + static_cast(0); Attributes::EnableLogging::TypeInfo::DecodableType enableLogging = static_cast(0); Attributes::Language::TypeInfo::DecodableType language; Attributes::LEDSettings::TypeInfo::DecodableType LEDSettings = static_cast(0); diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h index 07b9b339badc4f..456e420447ce9d 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h @@ -2848,6 +2848,10 @@ namespace CredentialRulesSupport { static constexpr AttributeId Id = 0x0000001B; } // namespace CredentialRulesSupport +namespace NumberOfCredentialsSupportedPerUser { +static constexpr AttributeId Id = 0x0000001C; +} // namespace NumberOfCredentialsSupportedPerUser + namespace EnableLogging { static constexpr AttributeId Id = 0x00000020; } // namespace EnableLogging diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h index 5c7d8f195de51d..a6a23ce869bbbb 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h @@ -427,6 +427,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)writeAttributeMinRFIDCodeLengthWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeCredentialRulesSupportWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeNumberOfCredentialsSupportedPerUserWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeSupportedOperatingModesWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeDefaultConfigurationRegisterWithValue:(NSNumber * _Nonnull)value diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm index cf1df2d741dbfc..2452c5c2a9ba5d 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm @@ -5580,6 +5580,25 @@ new CHIPDefaultSuccessCallbackBridge( }); } +- (void)writeAttributeNumberOfCredentialsSupportedPerUserWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedCharValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + - (void)writeAttributeSupportedOperatingModesWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h index 6260f11e6cb361..05e9f41a384468 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h @@ -21562,6 +21562,7 @@ class SubscribeAttributeDiagnosticLogsClusterRevision : public SubscribeAttribut | * MaxRFIDCodeLength | 0x0019 | | * MinRFIDCodeLength | 0x001A | | * CredentialRulesSupport | 0x001B | +| * NumberOfCredentialsSupportedPerUser | 0x001C | | * EnableLogging | 0x0020 | | * Language | 0x0021 | | * LEDSettings | 0x0022 | @@ -24808,6 +24809,81 @@ class SubscribeAttributeDoorLockCredentialRulesSupport : public SubscribeAttribu } }; +/* + * Attribute NumberOfCredentialsSupportedPerUser + */ +class ReadDoorLockNumberOfCredentialsSupportedPerUser : public ReadAttribute { +public: + ReadDoorLockNumberOfCredentialsSupportedPerUser() + : ReadAttribute("number-of-credentials-supported-per-user") + { + } + + ~ReadDoorLockNumberOfCredentialsSupportedPerUser() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x00000101) ReadAttribute (0x0000001C) on endpoint %u", endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPDoorLock * cluster = [[CHIPDoorLock alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIP_ERROR __block err = CHIP_NO_ERROR; + [cluster readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"DoorLock.NumberOfCredentialsSupportedPerUser response %@", [value description]); + err = [CHIPError errorToCHIPErrorCode:error]; + + if (error != nil) { + ChipLogError(chipTool, "DoorLock NumberOfCredentialsSupportedPerUser read Error: %s", chip::ErrorStr(err)); + } + SetCommandExitStatus(err); + }]; + return err; + } +}; + +class SubscribeAttributeDoorLockNumberOfCredentialsSupportedPerUser : public SubscribeAttribute { +public: + SubscribeAttributeDoorLockNumberOfCredentialsSupportedPerUser() + : SubscribeAttribute("number-of-credentials-supported-per-user") + { + } + + ~SubscribeAttributeDoorLockNumberOfCredentialsSupportedPerUser() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x00000101) ReportAttribute (0x0000001C) on endpoint %u", endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPDoorLock * cluster = [[CHIPDoorLock alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIPSubscribeParams * params = [[CHIPSubscribeParams alloc] init]; + params.keepPreviousSubscriptions + = mKeepSubscriptions.HasValue() ? [NSNumber numberWithBool:mKeepSubscriptions.Value()] : nil; + params.fabricFiltered = mFabricFiltered.HasValue() ? [NSNumber numberWithBool:mFabricFiltered.Value()] : nil; + [cluster subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval:[NSNumber numberWithUnsignedInt:mMinInterval] + maxInterval:[NSNumber numberWithUnsignedInt:mMaxInterval] + params:params + subscriptionEstablished:nullptr + reportHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"DoorLock.NumberOfCredentialsSupportedPerUser " + @"response %@", + [value description]); + if (error || !mWait) { + SetCommandExitStatus( + [CHIPError errorToCHIPErrorCode:error]); + } + }]; + + return CHIP_NO_ERROR; + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); + } +}; + /* * Attribute EnableLogging */ @@ -101502,6 +101578,8 @@ void registerClusterDoorLock(Commands & commands) make_unique(), // make_unique(), // make_unique(), // + make_unique(), // + make_unique(), // make_unique(), // make_unique(), // make_unique(), // diff --git a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h index cd2ca92a30a4cb..3e1a1e09b4823e 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h @@ -95397,207 +95397,252 @@ class DL_UsersAndCredentials : public TestCommandBridge { err = TestCreateNewRfidCredentialAndUserWithOutOfBoundsIndexFails_52(); break; case 53: - ChipLogProgress(chipTool, " ***** Test Step 53 : Create new PIN credential and try to add it to existing user\n"); - err = TestCreateNewPinCredentialAndTryToAddItToExistingUser_53(); + ChipLogProgress(chipTool, " ***** Test Step 53 : Create new credential and try to add it to 0 user\n"); + err = TestCreateNewCredentialAndTryToAddItTo0User_53(); break; case 54: - ChipLogProgress(chipTool, " ***** Test Step 54 : Create new credential and try to add it to 0 user\n"); - err = TestCreateNewCredentialAndTryToAddItTo0User_54(); + ChipLogProgress(chipTool, " ***** Test Step 54 : Create new credential and try to add it to out-of-bounds user\n"); + err = TestCreateNewCredentialAndTryToAddItToOutOfBoundsUser_54(); break; case 55: - ChipLogProgress(chipTool, " ***** Test Step 55 : Create new credential and try to add it to out-of-bounds user\n"); - err = TestCreateNewCredentialAndTryToAddItToOutOfBoundsUser_55(); + ChipLogProgress(chipTool, " ***** Test Step 55 : Create new PIN with too short data\n"); + err = TestCreateNewPinWithTooShortData_55(); break; case 56: - ChipLogProgress(chipTool, " ***** Test Step 56 : Create new PIN with too short data\n"); - err = TestCreateNewPinWithTooShortData_56(); + ChipLogProgress(chipTool, " ***** Test Step 56 : Create new PIN with too long data\n"); + err = TestCreateNewPinWithTooLongData_56(); break; case 57: - ChipLogProgress(chipTool, " ***** Test Step 57 : Create new PIN with too long data\n"); - err = TestCreateNewPinWithTooLongData_57(); + ChipLogProgress(chipTool, " ***** Test Step 57 : Create new RFID with too short data\n"); + err = TestCreateNewRfidWithTooShortData_57(); break; case 58: - ChipLogProgress(chipTool, " ***** Test Step 58 : Create new RFID with too short data\n"); - err = TestCreateNewRfidWithTooShortData_58(); + ChipLogProgress(chipTool, " ***** Test Step 58 : Create new PIN with Programming user type fails\n"); + err = TestCreateNewPinWithProgrammingUserTypeFails_58(); break; case 59: - ChipLogProgress(chipTool, " ***** Test Step 59 : Create new PIN with Programming user type fails\n"); - err = TestCreateNewPinWithProgrammingUserTypeFails_59(); + ChipLogProgress(chipTool, " ***** Test Step 59 : Create new RFID with too short data\n"); + err = TestCreateNewRfidWithTooShortData_59(); break; case 60: - ChipLogProgress(chipTool, " ***** Test Step 60 : Create new RFID with too short data\n"); - err = TestCreateNewRfidWithTooShortData_60(); + ChipLogProgress(chipTool, " ***** Test Step 60 : Create new PIN credential with data the would cause duplicate\n"); + err = TestCreateNewPinCredentialWithDataTheWouldCauseDuplicate_60(); break; case 61: - ChipLogProgress(chipTool, " ***** Test Step 61 : Create new PIN credential with data the would cause duplicate\n"); - err = TestCreateNewPinCredentialWithDataTheWouldCauseDuplicate_61(); + ChipLogProgress(chipTool, " ***** Test Step 61 : Create new RFID credential with data the would cause duplicate\n"); + err = TestCreateNewRfidCredentialWithDataTheWouldCauseDuplicate_61(); break; case 62: - ChipLogProgress(chipTool, " ***** Test Step 62 : Create new RFID credential with data the would cause duplicate\n"); - err = TestCreateNewRfidCredentialWithDataTheWouldCauseDuplicate_62(); + ChipLogProgress(chipTool, " ***** Test Step 62 : Modify credentialData of existing PIN credential\n"); + err = TestModifyCredentialDataOfExistingPinCredential_62(); break; case 63: - ChipLogProgress(chipTool, " ***** Test Step 63 : Modify credentialData of existing PIN credential\n"); - err = TestModifyCredentialDataOfExistingPinCredential_63(); + ChipLogProgress( + chipTool, " ***** Test Step 63 : Verify that credential was changed by creating new credential with old data\n"); + err = TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithOldData_63(); break; case 64: ChipLogProgress( - chipTool, " ***** Test Step 64 : Verify that credential was changed by creating new credential with old data\n"); - err = TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithOldData_64(); + chipTool, " ***** Test Step 64 : Verify that credential was changed by creating new credential with new data\n"); + err = TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithNewData_64(); break; case 65: - ChipLogProgress( - chipTool, " ***** Test Step 65 : Verify that credential was changed by creating new credential with new data\n"); - err = TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithNewData_65(); + ChipLogProgress(chipTool, " ***** Test Step 65 : Create new RFID credential and add it to existing user\n"); + err = TestCreateNewRfidCredentialAndAddItToExistingUser_65(); break; case 66: - ChipLogProgress(chipTool, " ***** Test Step 66 : Clear first PIN credential\n"); - err = TestClearFirstPinCredential_66(); + ChipLogProgress(chipTool, " ***** Test Step 66 : Verify modified user\n"); + err = TestVerifyModifiedUser_66(); break; case 67: - ChipLogProgress(chipTool, " ***** Test Step 67 : Read back the credential and make sure it is deleted\n"); - err = TestReadBackTheCredentialAndMakeSureItIsDeleted_67(); + ChipLogProgress(chipTool, " ***** Test Step 67 : Create new RFID credential and add it to existing user\n"); + err = TestCreateNewRfidCredentialAndAddItToExistingUser_67(); break; case 68: - ChipLogProgress(chipTool, " ***** Test Step 68 : Read the user back and make sure PIN credential is deleted\n"); - err = TestReadTheUserBackAndMakeSurePinCredentialIsDeleted_68(); + ChipLogProgress(chipTool, " ***** Test Step 68 : Verify modified user\n"); + err = TestVerifyModifiedUser_68(); break; case 69: - ChipLogProgress(chipTool, " ***** Test Step 69 : Clear the second PIN credential\n"); - err = TestClearTheSecondPinCredential_69(); + ChipLogProgress(chipTool, " ***** Test Step 69 : Clear first PIN credential\n"); + err = TestClearFirstPinCredential_69(); break; case 70: ChipLogProgress(chipTool, " ***** Test Step 70 : Read back the credential and make sure it is deleted\n"); err = TestReadBackTheCredentialAndMakeSureItIsDeleted_70(); break; case 71: - ChipLogProgress(chipTool, " ***** Test Step 71 : Read the user back and make sure related user is deleted\n"); - err = TestReadTheUserBackAndMakeSureRelatedUserIsDeleted_71(); + ChipLogProgress(chipTool, " ***** Test Step 71 : Read the user back and make sure PIN credential is deleted\n"); + err = TestReadTheUserBackAndMakeSurePinCredentialIsDeleted_71(); break; case 72: - ChipLogProgress(chipTool, " ***** Test Step 72 : Create new RFID credential with user\n"); - err = TestCreateNewRfidCredentialWithUser_72(); + ChipLogProgress(chipTool, " ***** Test Step 72 : Clear the second PIN credential\n"); + err = TestClearTheSecondPinCredential_72(); break; case 73: - ChipLogProgress(chipTool, " ***** Test Step 73 : Clear all the RFID credentials\n"); - err = TestClearAllTheRfidCredentials_73(); + ChipLogProgress(chipTool, " ***** Test Step 73 : Read back the credential and make sure it is deleted\n"); + err = TestReadBackTheCredentialAndMakeSureItIsDeleted_73(); break; case 74: - ChipLogProgress(chipTool, " ***** Test Step 74 : Read back the fist RFID credential and make sure it is deleted\n"); - err = TestReadBackTheFistRfidCredentialAndMakeSureItIsDeleted_74(); + ChipLogProgress(chipTool, " ***** Test Step 74 : Read the user back and make sure related user is deleted\n"); + err = TestReadTheUserBackAndMakeSureRelatedUserIsDeleted_74(); break; case 75: - ChipLogProgress(chipTool, " ***** Test Step 75 : Read back the second RFID credential and make sure it is deleted\n"); - err = TestReadBackTheSecondRfidCredentialAndMakeSureItIsDeleted_75(); + ChipLogProgress(chipTool, " ***** Test Step 75 : Create new RFID credential with user\n"); + err = TestCreateNewRfidCredentialWithUser_75(); break; case 76: - ChipLogProgress( - chipTool, " ***** Test Step 76 : Read the user related with first RFID back and make sure it is deleted\n"); - err = TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_76(); + ChipLogProgress(chipTool, " ***** Test Step 76 : Clear all the RFID credentials\n"); + err = TestClearAllTheRfidCredentials_76(); break; case 77: - ChipLogProgress( - chipTool, " ***** Test Step 77 : Read the user related with second RFID back and make sure it is deleted\n"); - err = TestReadTheUserRelatedWithSecondRfidBackAndMakeSureItIsDeleted_77(); + ChipLogProgress(chipTool, " ***** Test Step 77 : Read back the fist RFID credential and make sure it is deleted\n"); + err = TestReadBackTheFistRfidCredentialAndMakeSureItIsDeleted_77(); break; case 78: - ChipLogProgress(chipTool, " ***** Test Step 78 : Create new PIN credential with user\n"); - err = TestCreateNewPinCredentialWithUser_78(); + ChipLogProgress(chipTool, " ***** Test Step 78 : Read back the second RFID credential and make sure it is deleted\n"); + err = TestReadBackTheSecondRfidCredentialAndMakeSureItIsDeleted_78(); break; case 79: - ChipLogProgress(chipTool, " ***** Test Step 79 : Create new RFID credential with user\n"); - err = TestCreateNewRfidCredentialWithUser_79(); + ChipLogProgress(chipTool, " ***** Test Step 79 : Read back the third RFID credential and make sure it is deleted\n"); + err = TestReadBackTheThirdRfidCredentialAndMakeSureItIsDeleted_79(); break; case 80: - ChipLogProgress(chipTool, " ***** Test Step 80 : Create another RFID credential with user\n"); - err = TestCreateAnotherRfidCredentialWithUser_80(); + ChipLogProgress(chipTool, + " ***** Test Step 80 : Read the user related with first RFID back and make sure it has only PIN credential\n"); + err = TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItHasOnlyPinCredential_80(); break; case 81: - ChipLogProgress(chipTool, " ***** Test Step 81 : Clear all the credentials\n"); - err = TestClearAllTheCredentials_81(); + ChipLogProgress( + chipTool, " ***** Test Step 81 : Read the user related with second RFID back and make sure it is deleted\n"); + err = TestReadTheUserRelatedWithSecondRfidBackAndMakeSureItIsDeleted_81(); break; case 82: - ChipLogProgress(chipTool, " ***** Test Step 82 : Read back the first PIN credential and make sure it is deleted\n"); - err = TestReadBackTheFirstPinCredentialAndMakeSureItIsDeleted_82(); + ChipLogProgress(chipTool, " ***** Test Step 82 : Create new PIN credential with user\n"); + err = TestCreateNewPinCredentialWithUser_82(); break; case 83: - ChipLogProgress(chipTool, " ***** Test Step 83 : Read back the first RFID credential and make sure it is deleted\n"); - err = TestReadBackTheFirstRfidCredentialAndMakeSureItIsDeleted_83(); + ChipLogProgress(chipTool, " ***** Test Step 83 : Create new RFID credential with user\n"); + err = TestCreateNewRfidCredentialWithUser_83(); break; case 84: - ChipLogProgress(chipTool, " ***** Test Step 84 : Read back the second PIN credential and make sure it is deleted\n"); - err = TestReadBackTheSecondPinCredentialAndMakeSureItIsDeleted_84(); + ChipLogProgress(chipTool, " ***** Test Step 84 : Create another RFID credential with user\n"); + err = TestCreateAnotherRfidCredentialWithUser_84(); break; case 85: - ChipLogProgress( - chipTool, " ***** Test Step 85 : Read the user related with first PIN back and make sure it is deleted\n"); - err = TestReadTheUserRelatedWithFirstPinBackAndMakeSureItIsDeleted_85(); + ChipLogProgress(chipTool, " ***** Test Step 85 : Clear all the credentials\n"); + err = TestClearAllTheCredentials_85(); break; case 86: - ChipLogProgress( - chipTool, " ***** Test Step 86 : Read the user related with first RFID back and make sure it is deleted\n"); - err = TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_86(); + ChipLogProgress(chipTool, " ***** Test Step 86 : Read back the first PIN credential and make sure it is deleted\n"); + err = TestReadBackTheFirstPinCredentialAndMakeSureItIsDeleted_86(); break; case 87: - ChipLogProgress( - chipTool, " ***** Test Step 87 : Read the user related with second PIN back and make sure it is deleted\n"); - err = TestReadTheUserRelatedWithSecondPinBackAndMakeSureItIsDeleted_87(); + ChipLogProgress(chipTool, " ***** Test Step 87 : Read back the first RFID credential and make sure it is deleted\n"); + err = TestReadBackTheFirstRfidCredentialAndMakeSureItIsDeleted_87(); break; case 88: - ChipLogProgress(chipTool, " ***** Test Step 88 : Create new Programming PIN credential with invalid index\n"); - err = TestCreateNewProgrammingPinCredentialWithInvalidIndex_88(); + ChipLogProgress(chipTool, " ***** Test Step 88 : Read back the second PIN credential and make sure it is deleted\n"); + err = TestReadBackTheSecondPinCredentialAndMakeSureItIsDeleted_88(); break; case 89: - ChipLogProgress(chipTool, " ***** Test Step 89 : Create new Programming PIN credential with valid index\n"); - err = TestCreateNewProgrammingPinCredentialWithValidIndex_89(); + ChipLogProgress( + chipTool, " ***** Test Step 89 : Read the user related with first PIN back and make sure it is deleted\n"); + err = TestReadTheUserRelatedWithFirstPinBackAndMakeSureItIsDeleted_89(); break; case 90: - ChipLogProgress(chipTool, " ***** Test Step 90 : Verify created user\n"); - err = TestVerifyCreatedUser_90(); + ChipLogProgress( + chipTool, " ***** Test Step 90 : Read the user related with first RFID back and make sure it is deleted\n"); + err = TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_90(); break; case 91: - ChipLogProgress(chipTool, " ***** Test Step 91 : Verify created programming PIN credential\n"); - err = TestVerifyCreatedProgrammingPinCredential_91(); + ChipLogProgress( + chipTool, " ***** Test Step 91 : Read the user related with second PIN back and make sure it is deleted\n"); + err = TestReadTheUserRelatedWithSecondPinBackAndMakeSureItIsDeleted_91(); break; case 92: - ChipLogProgress(chipTool, " ***** Test Step 92 : Modify the Programming PIN credential\n"); - err = TestModifyTheProgrammingPinCredential_92(); + ChipLogProgress( + chipTool, " ***** Test Step 92 : Read the user related with last RFID back and make sure it is deleted\n"); + err = TestReadTheUserRelatedWithLastRfidBackAndMakeSureItIsDeleted_92(); break; case 93: - ChipLogProgress(chipTool, " ***** Test Step 93 : Clearing Programming PIN fails\n"); - err = TestClearingProgrammingPinFails_93(); + ChipLogProgress(chipTool, " ***** Test Step 93 : Create new Programming PIN credential with invalid index\n"); + err = TestCreateNewProgrammingPinCredentialWithInvalidIndex_93(); break; case 94: - ChipLogProgress(chipTool, " ***** Test Step 94 : Clearing Programming PIN with invalid index fails\n"); - err = TestClearingProgrammingPinWithInvalidIndexFails_94(); + ChipLogProgress(chipTool, " ***** Test Step 94 : Create new Programming PIN credential with valid index\n"); + err = TestCreateNewProgrammingPinCredentialWithValidIndex_94(); break; case 95: - ChipLogProgress(chipTool, " ***** Test Step 95 : Clearing PIN credential with zero index fails\n"); - err = TestClearingPinCredentialWithZeroIndexFails_95(); + ChipLogProgress(chipTool, " ***** Test Step 95 : Verify created user\n"); + err = TestVerifyCreatedUser_95(); break; case 96: - ChipLogProgress(chipTool, " ***** Test Step 96 : Clearing PIN credential with out-of-bound index fails\n"); - err = TestClearingPinCredentialWithOutOfBoundIndexFails_96(); + ChipLogProgress(chipTool, " ***** Test Step 96 : Verify created programming PIN credential\n"); + err = TestVerifyCreatedProgrammingPinCredential_96(); break; case 97: - ChipLogProgress(chipTool, " ***** Test Step 97 : Clearing RFID credential with zero index fails\n"); - err = TestClearingRfidCredentialWithZeroIndexFails_97(); + ChipLogProgress(chipTool, " ***** Test Step 97 : Modify the Programming PIN credential\n"); + err = TestModifyTheProgrammingPinCredential_97(); break; case 98: - ChipLogProgress(chipTool, " ***** Test Step 98 : Clearing RFID credential with out-of-bound index fails\n"); - err = TestClearingRfidCredentialWithOutOfBoundIndexFails_98(); + ChipLogProgress(chipTool, " ***** Test Step 98 : Clearing Programming PIN fails\n"); + err = TestClearingProgrammingPinFails_98(); break; case 99: - ChipLogProgress(chipTool, " ***** Test Step 99 : Clear the Programming PIN user\n"); - err = TestClearTheProgrammingPinUser_99(); + ChipLogProgress(chipTool, " ***** Test Step 99 : Clearing Programming PIN with invalid index fails\n"); + err = TestClearingProgrammingPinWithInvalidIndexFails_99(); break; case 100: - ChipLogProgress(chipTool, " ***** Test Step 100 : Make sure Programming PIN user is deleted\n"); - err = TestMakeSureProgrammingPinUserIsDeleted_100(); + ChipLogProgress(chipTool, " ***** Test Step 100 : Clearing PIN credential with zero index fails\n"); + err = TestClearingPinCredentialWithZeroIndexFails_100(); break; case 101: - ChipLogProgress(chipTool, " ***** Test Step 101 : Make sure programming PIN credential is deleted\n"); - err = TestMakeSureProgrammingPinCredentialIsDeleted_101(); + ChipLogProgress(chipTool, " ***** Test Step 101 : Clearing PIN credential with out-of-bound index fails\n"); + err = TestClearingPinCredentialWithOutOfBoundIndexFails_101(); + break; + case 102: + ChipLogProgress(chipTool, " ***** Test Step 102 : Clearing RFID credential with zero index fails\n"); + err = TestClearingRfidCredentialWithZeroIndexFails_102(); + break; + case 103: + ChipLogProgress(chipTool, " ***** Test Step 103 : Clearing RFID credential with out-of-bound index fails\n"); + err = TestClearingRfidCredentialWithOutOfBoundIndexFails_103(); + break; + case 104: + ChipLogProgress(chipTool, " ***** Test Step 104 : Clear the Programming PIN user\n"); + err = TestClearTheProgrammingPinUser_104(); + break; + case 105: + ChipLogProgress(chipTool, " ***** Test Step 105 : Make sure Programming PIN user is deleted\n"); + err = TestMakeSureProgrammingPinUserIsDeleted_105(); + break; + case 106: + ChipLogProgress(chipTool, " ***** Test Step 106 : Make sure programming PIN credential is deleted\n"); + err = TestMakeSureProgrammingPinCredentialIsDeleted_106(); + break; + case 107: + ChipLogProgress(chipTool, " ***** Test Step 107 : Create new PIN credential and user\n"); + err = TestCreateNewPinCredentialAndUser_107(); + break; + case 108: + ChipLogProgress(chipTool, " ***** Test Step 108 : Create second PIN credential and add it to existing user\n"); + err = TestCreateSecondPinCredentialAndAddItToExistingUser_108(); + break; + case 109: + ChipLogProgress(chipTool, " ***** Test Step 109 : Create third PIN credential and add it to existing user\n"); + err = TestCreateThirdPinCredentialAndAddItToExistingUser_109(); + break; + case 110: + ChipLogProgress(chipTool, " ***** Test Step 110 : Create fourth PIN credential and add it to existing user\n"); + err = TestCreateFourthPinCredentialAndAddItToExistingUser_110(); + break; + case 111: + ChipLogProgress(chipTool, " ***** Test Step 111 : Create fifth PIN credential and add it to existing user\n"); + err = TestCreateFifthPinCredentialAndAddItToExistingUser_111(); + break; + case 112: + ChipLogProgress(chipTool, " ***** Test Step 112 : Try to create sixth PIN credential and make sure it fails\n"); + err = TestTryToCreateSixthPinCredentialAndMakeSureItFails_112(); break; } @@ -95890,30 +95935,63 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 93: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 94: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 95: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 96: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 97: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 98: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; case 99: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; case 100: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; case 101: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + break; + case 102: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + break; + case 103: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + break; + case 104: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + 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)); + break; + case 110: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 111: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 112: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; } @@ -95929,7 +96007,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 102; + const uint16_t mTestCount = 113; chip::Optional mNodeId; chip::Optional mCluster; @@ -97534,6 +97612,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -97750,6 +97838,18 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -97954,6 +98054,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -98126,6 +98236,18 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -98228,52 +98350,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinCredentialAndTryToAddItToExistingUser_53() - { - CHIPDevice * device = GetDevice("alpha"); - CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; - params.operationType = [NSNumber numberWithUnsignedChar:0]; - params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:3U]; - - params.credentialData = [[NSData alloc] initWithBytes:"123465" length:6]; - params.userIndex = [NSNumber numberWithUnsignedShort:1U]; - params.userStatus = nil; - params.userType = nil; - [cluster - setCredentialWithParams:params - completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"Create new PIN credential and try to add it to existing user Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = values.status; - VerifyOrReturn(CheckValue("status", actualValue, 3)); - } - - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("userIndex", actualValue)); - } - - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); - VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 4U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCreateNewCredentialAndTryToAddItTo0User_54() + CHIP_ERROR TestCreateNewCredentialAndTryToAddItTo0User_53() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98318,7 +98395,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewCredentialAndTryToAddItToOutOfBoundsUser_55() + CHIP_ERROR TestCreateNewCredentialAndTryToAddItToOutOfBoundsUser_54() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98363,7 +98440,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinWithTooShortData_56() + CHIP_ERROR TestCreateNewPinWithTooShortData_55() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98408,7 +98485,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinWithTooLongData_57() + CHIP_ERROR TestCreateNewPinWithTooLongData_56() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98453,7 +98530,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewRfidWithTooShortData_58() + CHIP_ERROR TestCreateNewRfidWithTooShortData_57() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98498,7 +98575,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinWithProgrammingUserTypeFails_59() + CHIP_ERROR TestCreateNewPinWithProgrammingUserTypeFails_58() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98543,7 +98620,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewRfidWithTooShortData_60() + CHIP_ERROR TestCreateNewRfidWithTooShortData_59() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98588,7 +98665,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinCredentialWithDataTheWouldCauseDuplicate_61() + CHIP_ERROR TestCreateNewPinCredentialWithDataTheWouldCauseDuplicate_60() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98633,7 +98710,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewRfidCredentialWithDataTheWouldCauseDuplicate_62() + CHIP_ERROR TestCreateNewRfidCredentialWithDataTheWouldCauseDuplicate_61() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98678,7 +98755,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestModifyCredentialDataOfExistingPinCredential_63() + CHIP_ERROR TestModifyCredentialDataOfExistingPinCredential_62() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98723,7 +98800,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithOldData_64() + CHIP_ERROR TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithOldData_63() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98769,7 +98846,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithNewData_65() + CHIP_ERROR TestVerifyThatCredentialWasChangedByCreatingNewCredentialWithNewData_64() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98814,152 +98891,447 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearFirstPinCredential_66() + CHIP_ERROR TestCreateNewRfidCredentialAndAddItToExistingUser_65() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[CHIPDoorLockClusterClearCredentialParams alloc] init]; + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:2]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:4U]; - [cluster clearCredentialWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Clear first PIN credential Error: %@", err); + params.credentialData = [[NSData alloc] initWithBytes:"rfid_data_7890" length:14]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create new RFID credential and add it to existing user Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 5U)); + } + + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheCredentialAndMakeSureItIsDeleted_67() + CHIP_ERROR TestVerifyModifiedUser_66() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[CHIPDoorLockClusterGetCredentialStatusParams alloc] init]; - params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; - ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + __auto_type * params = [[CHIPDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + [cluster + getUserWithParams:params + completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Verify modified user Error: %@", err); - [cluster getCredentialStatusWithParams:params - completionHandler:^( - CHIPDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"Read back the credential and make sure it is deleted Error: %@", err); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); + } - { - id actualValue = values.credentialExists; - VerifyOrReturn(CheckValue("credentialExists", actualValue, false)); - } + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNonNull("userName", actualValue)); + VerifyOrReturn(CheckValueAsString("userName", actualValue, @"")); + } - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValueNull("userIndex", actualValue)); - } + { + id actualValue = values.userUniqueId; + VerifyOrReturn(CheckValueNull("userUniqueId", actualValue)); + } - { - id actualValue = values.nextCredentialIndex; - VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); - VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 4U)); - } + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNonNull("userStatus", actualValue)); + VerifyOrReturn(CheckValue("userStatus", actualValue, 1)); + } - NextTest(); - }]; + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNonNull("userType", actualValue)); + VerifyOrReturn(CheckValue("userType", actualValue, 0)); + } + + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNonNull("credentialRule", actualValue)); + VerifyOrReturn(CheckValue("credentialRule", actualValue, 0)); + } + + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNonNull("credentials", actualValue)); + VerifyOrReturn(CheckValue("credentials", [actualValue count], static_cast(3))); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialType, 1)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialIndex, 1U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialIndex, 2U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialIndex, 4U)); + } + + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNonNull("nextUserIndex", actualValue)); + VerifyOrReturn(CheckValue("nextUserIndex", actualValue, 3U)); + } + + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserBackAndMakeSurePinCredentialIsDeleted_68() + CHIP_ERROR TestCreateNewRfidCredentialAndAddItToExistingUser_67() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[CHIPDoorLockClusterGetUserParams alloc] init]; + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:5U]; + + params.credentialData = [[NSData alloc] initWithBytes:"789012" length:6]; params.userIndex = [NSNumber numberWithUnsignedShort:1U]; - [cluster getUserWithParams:params - completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"Read the user back and make sure PIN credential is deleted Error: %@", err); + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create new RFID credential and add it to existing user Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = values.userIndex; - VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); - } + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } - { - id actualValue = values.userName; - VerifyOrReturn(CheckValueNonNull("userName", actualValue)); - VerifyOrReturn(CheckValueAsString("userName", actualValue, @"")); - } + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } - { - id actualValue = values.userUniqueId; - VerifyOrReturn(CheckValueNull("userUniqueId", actualValue)); - } + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 6U)); + } - { - id actualValue = values.userStatus; - VerifyOrReturn(CheckValueNonNull("userStatus", actualValue)); - VerifyOrReturn(CheckValue("userStatus", actualValue, 1)); - } + NextTest(); + }]; - { - id actualValue = values.userType; - VerifyOrReturn(CheckValueNonNull("userType", actualValue)); - VerifyOrReturn(CheckValue("userType", actualValue, 0)); - } + return CHIP_NO_ERROR; + } - { - id actualValue = values.credentialRule; - VerifyOrReturn(CheckValueNonNull("credentialRule", actualValue)); - VerifyOrReturn(CheckValue("credentialRule", actualValue, 0)); - } + CHIP_ERROR TestVerifyModifiedUser_68() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - { - id actualValue = values.credentials; - VerifyOrReturn(CheckValueNonNull("credentials", actualValue)); - VerifyOrReturn(CheckValue("credentials", [actualValue count], static_cast(1))); - VerifyOrReturn( - CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialType, 2)); - VerifyOrReturn(CheckValue( - "CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialIndex, 2U)); - } + __auto_type * params = [[CHIPDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + [cluster + getUserWithParams:params + completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Verify modified user Error: %@", err); - { - id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); - VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); - } + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); - VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); - } + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); + } - { - id actualValue = values.nextUserIndex; - VerifyOrReturn(CheckValueNonNull("nextUserIndex", actualValue)); - VerifyOrReturn(CheckValue("nextUserIndex", actualValue, 3U)); - } + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNonNull("userName", actualValue)); + VerifyOrReturn(CheckValueAsString("userName", actualValue, @"")); + } - NextTest(); - }]; + { + id actualValue = values.userUniqueId; + VerifyOrReturn(CheckValueNull("userUniqueId", actualValue)); + } + + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNonNull("userStatus", actualValue)); + VerifyOrReturn(CheckValue("userStatus", actualValue, 1)); + } + + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNonNull("userType", actualValue)); + VerifyOrReturn(CheckValue("userType", actualValue, 0)); + } + + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNonNull("credentialRule", actualValue)); + VerifyOrReturn(CheckValue("credentialRule", actualValue, 0)); + } + + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNonNull("credentials", actualValue)); + VerifyOrReturn(CheckValue("credentials", [actualValue count], static_cast(4))); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialType, 1)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialIndex, 1U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialIndex, 2U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialIndex, 4U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[3]).credentialType, 1)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[3]).credentialIndex, 5U)); + } + + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNonNull("nextUserIndex", actualValue)); + VerifyOrReturn(CheckValue("nextUserIndex", actualValue, 3U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestClearFirstPinCredential_69() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterClearCredentialParams alloc] init]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + + [cluster clearCredentialWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Clear first PIN credential Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadBackTheCredentialAndMakeSureItIsDeleted_70() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterGetCredentialStatusParams alloc] init]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + + [cluster getCredentialStatusWithParams:params + completionHandler:^( + CHIPDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Read back the credential and make sure it is deleted 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)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 6U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheUserBackAndMakeSurePinCredentialIsDeleted_71() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + [cluster + getUserWithParams:params + completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Read the user back and make sure PIN credential is deleted Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); + } + + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNonNull("userName", actualValue)); + VerifyOrReturn(CheckValueAsString("userName", actualValue, @"")); + } + + { + id actualValue = values.userUniqueId; + VerifyOrReturn(CheckValueNull("userUniqueId", actualValue)); + } + + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNonNull("userStatus", actualValue)); + VerifyOrReturn(CheckValue("userStatus", actualValue, 1)); + } + + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNonNull("userType", actualValue)); + VerifyOrReturn(CheckValue("userType", actualValue, 0)); + } + + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNonNull("credentialRule", actualValue)); + VerifyOrReturn(CheckValue("credentialRule", actualValue, 0)); + } + + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNonNull("credentials", actualValue)); + VerifyOrReturn(CheckValue("credentials", [actualValue count], static_cast(3))); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialIndex, 2U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialType, 2)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[1]).credentialIndex, 4U)); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialType, 1)); + VerifyOrReturn( + CheckValue("CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[2]).credentialIndex, 5U)); + } + + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNonNull("nextUserIndex", actualValue)); + VerifyOrReturn(CheckValue("nextUserIndex", actualValue, 3U)); + } + + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestClearTheSecondPinCredential_69() + CHIP_ERROR TestClearTheSecondPinCredential_72() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -98982,7 +99354,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheCredentialAndMakeSureItIsDeleted_70() + CHIP_ERROR TestReadBackTheCredentialAndMakeSureItIsDeleted_73() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99010,10 +99382,20 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); - VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 4U)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 6U)); } NextTest(); @@ -99022,7 +99404,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserBackAndMakeSureRelatedUserIsDeleted_71() + CHIP_ERROR TestReadTheUserBackAndMakeSureRelatedUserIsDeleted_74() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99093,7 +99475,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewRfidCredentialWithUser_72() + CHIP_ERROR TestCreateNewRfidCredentialWithUser_75() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99139,7 +99521,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearAllTheRfidCredentials_73() + CHIP_ERROR TestClearAllTheRfidCredentials_76() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99162,7 +99544,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheFistRfidCredentialAndMakeSureItIsDeleted_74() + CHIP_ERROR TestReadBackTheFistRfidCredentialAndMakeSureItIsDeleted_77() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99190,6 +99572,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -99202,7 +99594,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheSecondRfidCredentialAndMakeSureItIsDeleted_75() + CHIP_ERROR TestReadBackTheSecondRfidCredentialAndMakeSureItIsDeleted_78() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99230,6 +99622,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -99242,7 +99644,57 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_76() + CHIP_ERROR TestReadBackTheThirdRfidCredentialAndMakeSureItIsDeleted_79() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterGetCredentialStatusParams alloc] init]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:2]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:4U]; + + [cluster getCredentialStatusWithParams:params + completionHandler:^( + CHIPDoorLockClusterGetCredentialStatusResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Read back the third RFID credential and make sure it is deleted 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)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 6U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItHasOnlyPinCredential_80() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99252,7 +99704,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { params.userIndex = [NSNumber numberWithUnsignedShort:1U]; [cluster getUserWithParams:params completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { - NSLog(@"Read the user related with first RFID back and make sure it is deleted Error: %@", err); + NSLog(@"Read the user related with first RFID back and make sure it has only PIN credential Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -99263,7 +99715,8 @@ class DL_UsersAndCredentials : public TestCommandBridge { { id actualValue = values.userName; - VerifyOrReturn(CheckValueNull("userName", actualValue)); + VerifyOrReturn(CheckValueNonNull("userName", actualValue)); + VerifyOrReturn(CheckValueAsString("userName", actualValue, @"")); } { @@ -99273,32 +99726,42 @@ class DL_UsersAndCredentials : public TestCommandBridge { { id actualValue = values.userStatus; - VerifyOrReturn(CheckValueNull("userStatus", actualValue)); + VerifyOrReturn(CheckValueNonNull("userStatus", actualValue)); + VerifyOrReturn(CheckValue("userStatus", actualValue, 1)); } { id actualValue = values.userType; - VerifyOrReturn(CheckValueNull("userType", actualValue)); + VerifyOrReturn(CheckValueNonNull("userType", actualValue)); + VerifyOrReturn(CheckValue("userType", actualValue, 0)); } { id actualValue = values.credentialRule; - VerifyOrReturn(CheckValueNull("credentialRule", actualValue)); + VerifyOrReturn(CheckValueNonNull("credentialRule", actualValue)); + VerifyOrReturn(CheckValue("credentialRule", actualValue, 0)); } { id actualValue = values.credentials; - VerifyOrReturn(CheckValueNull("credentials", actualValue)); + VerifyOrReturn(CheckValueNonNull("credentials", actualValue)); + VerifyOrReturn(CheckValue("credentials", [actualValue count], static_cast(1))); + VerifyOrReturn( + CheckValue("CredentialType", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialType, 1)); + VerifyOrReturn(CheckValue( + "CredentialIndex", ((CHIPDoorLockClusterDlCredential *) actualValue[0]).credentialIndex, 5U)); } { id actualValue = values.creatorFabricIndex; - VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); } { id actualValue = values.lastModifiedFabricIndex; - VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); } { @@ -99313,7 +99776,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserRelatedWithSecondRfidBackAndMakeSureItIsDeleted_77() + CHIP_ERROR TestReadTheUserRelatedWithSecondRfidBackAndMakeSureItIsDeleted_81() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99384,7 +99847,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewPinCredentialWithUser_78() + CHIP_ERROR TestCreateNewPinCredentialWithUser_82() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99415,7 +99878,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { { id actualValue = values.userIndex; VerifyOrReturn(CheckValueNonNull("userIndex", actualValue)); - VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); + VerifyOrReturn(CheckValue("userIndex", actualValue, 2U)); } { @@ -99430,7 +99893,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewRfidCredentialWithUser_79() + CHIP_ERROR TestCreateNewRfidCredentialWithUser_83() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99461,7 +99924,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { { id actualValue = values.userIndex; VerifyOrReturn(CheckValueNonNull("userIndex", actualValue)); - VerifyOrReturn(CheckValue("userIndex", actualValue, 2U)); + VerifyOrReturn(CheckValue("userIndex", actualValue, 3U)); } { @@ -99476,7 +99939,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateAnotherRfidCredentialWithUser_80() + CHIP_ERROR TestCreateAnotherRfidCredentialWithUser_84() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99507,7 +99970,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { { id actualValue = values.userIndex; VerifyOrReturn(CheckValueNonNull("userIndex", actualValue)); - VerifyOrReturn(CheckValue("userIndex", actualValue, 3U)); + VerifyOrReturn(CheckValue("userIndex", actualValue, 4U)); } { @@ -99522,7 +99985,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearAllTheCredentials_81() + CHIP_ERROR TestClearAllTheCredentials_85() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99542,7 +100005,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheFirstPinCredentialAndMakeSureItIsDeleted_82() + CHIP_ERROR TestReadBackTheFirstPinCredentialAndMakeSureItIsDeleted_86() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99570,6 +100033,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -99582,7 +100055,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheFirstRfidCredentialAndMakeSureItIsDeleted_83() + CHIP_ERROR TestReadBackTheFirstRfidCredentialAndMakeSureItIsDeleted_87() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99610,6 +100083,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -99622,7 +100105,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadBackTheSecondPinCredentialAndMakeSureItIsDeleted_84() + CHIP_ERROR TestReadBackTheSecondPinCredentialAndMakeSureItIsDeleted_88() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99650,6 +100133,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); @@ -99662,7 +100155,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserRelatedWithFirstPinBackAndMakeSureItIsDeleted_85() + CHIP_ERROR TestReadTheUserRelatedWithFirstPinBackAndMakeSureItIsDeleted_89() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99733,7 +100226,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_86() + CHIP_ERROR TestReadTheUserRelatedWithFirstRfidBackAndMakeSureItIsDeleted_90() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99804,7 +100297,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheUserRelatedWithSecondPinBackAndMakeSureItIsDeleted_87() + CHIP_ERROR TestReadTheUserRelatedWithSecondPinBackAndMakeSureItIsDeleted_91() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99875,7 +100368,78 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewProgrammingPinCredentialWithInvalidIndex_88() + CHIP_ERROR TestReadTheUserRelatedWithLastRfidBackAndMakeSureItIsDeleted_92() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterGetUserParams alloc] init]; + params.userIndex = [NSNumber numberWithUnsignedShort:4U]; + [cluster getUserWithParams:params + completionHandler:^(CHIPDoorLockClusterGetUserResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Read the user related with last RFID back and make sure it is deleted Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValue("userIndex", actualValue, 4U)); + } + + { + id actualValue = values.userName; + VerifyOrReturn(CheckValueNull("userName", actualValue)); + } + + { + id actualValue = values.userUniqueId; + VerifyOrReturn(CheckValueNull("userUniqueId", actualValue)); + } + + { + id actualValue = values.userStatus; + VerifyOrReturn(CheckValueNull("userStatus", actualValue)); + } + + { + id actualValue = values.userType; + VerifyOrReturn(CheckValueNull("userType", actualValue)); + } + + { + id actualValue = values.credentialRule; + VerifyOrReturn(CheckValueNull("credentialRule", actualValue)); + } + + { + id actualValue = values.credentials; + VerifyOrReturn(CheckValueNull("credentials", actualValue)); + } + + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + + { + id actualValue = values.nextUserIndex; + VerifyOrReturn(CheckValueNonNull("nextUserIndex", actualValue)); + VerifyOrReturn(CheckValue("nextUserIndex", actualValue, 5U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCreateNewProgrammingPinCredentialWithInvalidIndex_93() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99919,7 +100483,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCreateNewProgrammingPinCredentialWithValidIndex_89() + CHIP_ERROR TestCreateNewProgrammingPinCredentialWithValidIndex_94() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -99964,7 +100528,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestVerifyCreatedUser_90() + CHIP_ERROR TestVerifyCreatedUser_95() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100046,7 +100610,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestVerifyCreatedProgrammingPinCredential_91() + CHIP_ERROR TestVerifyCreatedProgrammingPinCredential_96() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100075,6 +100639,18 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("creatorFabricIndex", actualValue, 1)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", actualValue)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex", actualValue, 1)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNull("nextCredentialIndex", actualValue)); @@ -100086,7 +100662,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestModifyTheProgrammingPinCredential_92() + CHIP_ERROR TestModifyTheProgrammingPinCredential_97() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100130,7 +100706,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingProgrammingPinFails_93() + CHIP_ERROR TestClearingProgrammingPinFails_98() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100152,7 +100728,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingProgrammingPinWithInvalidIndexFails_94() + CHIP_ERROR TestClearingProgrammingPinWithInvalidIndexFails_99() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100174,7 +100750,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingPinCredentialWithZeroIndexFails_95() + CHIP_ERROR TestClearingPinCredentialWithZeroIndexFails_100() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100196,7 +100772,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingPinCredentialWithOutOfBoundIndexFails_96() + CHIP_ERROR TestClearingPinCredentialWithOutOfBoundIndexFails_101() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100219,7 +100795,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingRfidCredentialWithZeroIndexFails_97() + CHIP_ERROR TestClearingRfidCredentialWithZeroIndexFails_102() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100241,7 +100817,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearingRfidCredentialWithOutOfBoundIndexFails_98() + CHIP_ERROR TestClearingRfidCredentialWithOutOfBoundIndexFails_103() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100264,7 +100840,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestClearTheProgrammingPinUser_99() + CHIP_ERROR TestClearTheProgrammingPinUser_104() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100284,7 +100860,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMakeSureProgrammingPinUserIsDeleted_100() + CHIP_ERROR TestMakeSureProgrammingPinUserIsDeleted_105() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100355,7 +100931,7 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMakeSureProgrammingPinCredentialIsDeleted_101() + CHIP_ERROR TestMakeSureProgrammingPinCredentialIsDeleted_106() { CHIPDevice * device = GetDevice("alpha"); CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -100383,6 +100959,16 @@ class DL_UsersAndCredentials : public TestCommandBridge { VerifyOrReturn(CheckValueNull("userIndex", actualValue)); } + { + id actualValue = values.creatorFabricIndex; + VerifyOrReturn(CheckValueNull("creatorFabricIndex", actualValue)); + } + + { + id actualValue = values.lastModifiedFabricIndex; + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", actualValue)); + } + { id actualValue = values.nextCredentialIndex; VerifyOrReturn(CheckValueNull("nextCredentialIndex", actualValue)); @@ -100393,6 +100979,277 @@ class DL_UsersAndCredentials : public TestCommandBridge { return CHIP_NO_ERROR; } + + CHIP_ERROR TestCreateNewPinCredentialAndUser_107() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:1U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000000" length:6]; + params.userIndex = nil; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create new PIN credential and user Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNonNull("userIndex", actualValue)); + VerifyOrReturn(CheckValue("userIndex", actualValue, 1U)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 2U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCreateSecondPinCredentialAndAddItToExistingUser_108() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:2U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000001" length:6]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create second PIN credential and add it to existing user Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 3U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCreateThirdPinCredentialAndAddItToExistingUser_109() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:3U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000002" length:6]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create third PIN credential and add it to existing user Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 4U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCreateFourthPinCredentialAndAddItToExistingUser_110() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:4U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000003" length:6]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create fourth PIN credential and add it to existing user Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 5U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCreateFifthPinCredentialAndAddItToExistingUser_111() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:5U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000004" length:6]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Create fifth PIN credential and add it to existing user Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 0)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 6U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTryToCreateSixthPinCredentialAndMakeSureItFails_112() + { + CHIPDevice * device = GetDevice("alpha"); + CHIPTestDoorLock * cluster = [[CHIPTestDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[CHIPDoorLockClusterSetCredentialParams alloc] init]; + params.operationType = [NSNumber numberWithUnsignedChar:0]; + params.credential = [[CHIPDoorLockClusterDlCredential alloc] init]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialType = [NSNumber numberWithUnsignedChar:1]; + ((CHIPDoorLockClusterDlCredential *) params.credential).credentialIndex = [NSNumber numberWithUnsignedShort:6U]; + + params.credentialData = [[NSData alloc] initWithBytes:"000005" length:6]; + params.userIndex = [NSNumber numberWithUnsignedShort:1U]; + params.userStatus = nil; + params.userType = nil; + [cluster + setCredentialWithParams:params + completionHandler:^(CHIPDoorLockClusterSetCredentialResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"Try to create sixth PIN credential and make sure it fails Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = values.status; + VerifyOrReturn(CheckValue("status", actualValue, 137)); + } + + { + id actualValue = values.userIndex; + VerifyOrReturn(CheckValueNull("userIndex", actualValue)); + } + + { + id actualValue = values.nextCredentialIndex; + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", actualValue)); + VerifyOrReturn(CheckValue("nextCredentialIndex", actualValue, 7U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } }; class DL_LockUnlock : public TestCommandBridge { diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index bb03595cd2ffd4..680dd33c486bf4 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -7409,6 +7409,7 @@ class WriteShadeConfigurationMode : public WriteAttribute | * MaxRFIDCodeLength | 0x0019 | | * MinRFIDCodeLength | 0x001A | | * CredentialRulesSupport | 0x001B | +| * NumberOfCredentialsSupportedPerUser | 0x001C | | * EnableLogging | 0x0020 | | * Language | 0x0021 | | * LEDSettings | 0x0022 | @@ -22097,12 +22098,14 @@ void registerClusterDoorLock(Commands & commands, CredentialIssuerCommands * cre make_unique(Id, "number-of-year-day-schedules-supported-per-user", Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id, credsIssuerConfig), // make_unique(Id, "number-of-holiday-schedules-supported", Attributes::NumberOfHolidaySchedulesSupported::Id, - credsIssuerConfig), // - make_unique(Id, "max-pincode-length", Attributes::MaxPINCodeLength::Id, credsIssuerConfig), // - make_unique(Id, "min-pincode-length", Attributes::MinPINCodeLength::Id, credsIssuerConfig), // - make_unique(Id, "max-rfidcode-length", Attributes::MaxRFIDCodeLength::Id, credsIssuerConfig), // - make_unique(Id, "min-rfidcode-length", Attributes::MinRFIDCodeLength::Id, credsIssuerConfig), // - make_unique(Id, "credential-rules-support", Attributes::CredentialRulesSupport::Id, credsIssuerConfig), // + credsIssuerConfig), // + make_unique(Id, "max-pincode-length", Attributes::MaxPINCodeLength::Id, credsIssuerConfig), // + make_unique(Id, "min-pincode-length", Attributes::MinPINCodeLength::Id, credsIssuerConfig), // + make_unique(Id, "max-rfidcode-length", Attributes::MaxRFIDCodeLength::Id, credsIssuerConfig), // + make_unique(Id, "min-rfidcode-length", Attributes::MinRFIDCodeLength::Id, credsIssuerConfig), // + make_unique(Id, "credential-rules-support", Attributes::CredentialRulesSupport::Id, credsIssuerConfig), // + make_unique(Id, "number-of-credentials-supported-per-user", + Attributes::NumberOfCredentialsSupportedPerUser::Id, credsIssuerConfig), // make_unique(Id, "enable-logging", Attributes::EnableLogging::Id, credsIssuerConfig), // make_unique(Id, "language", Attributes::Language::Id, credsIssuerConfig), // make_unique(Id, "ledsettings", Attributes::LEDSettings::Id, credsIssuerConfig), // @@ -22199,7 +22202,9 @@ void registerClusterDoorLock(Commands & commands, CredentialIssuerCommands * cre make_unique(Id, "max-rfidcode-length", Attributes::MaxRFIDCodeLength::Id, credsIssuerConfig), // make_unique(Id, "min-rfidcode-length", Attributes::MinRFIDCodeLength::Id, credsIssuerConfig), // make_unique(Id, "credential-rules-support", Attributes::CredentialRulesSupport::Id, - credsIssuerConfig), // + credsIssuerConfig), // + make_unique(Id, "number-of-credentials-supported-per-user", + Attributes::NumberOfCredentialsSupportedPerUser::Id, credsIssuerConfig), // make_unique(Id, "enable-logging", Attributes::EnableLogging::Id, credsIssuerConfig), // make_unique(Id, "language", Attributes::Language::Id, credsIssuerConfig), // make_unique(Id, "ledsettings", Attributes::LEDSettings::Id, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index c97f85dc5a2222..abd30ebf4cde7a 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -3770,6 +3770,8 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, DataModelLogger::LogString(label, indent, "{"); ReturnErrorOnFailure(DataModelLogger::LogValue("credentialExists", indent + 1, value.credentialExists)); ReturnErrorOnFailure(DataModelLogger::LogValue("userIndex", indent + 1, value.userIndex)); + ReturnErrorOnFailure(DataModelLogger::LogValue("creatorFabricIndex", indent + 1, value.creatorFabricIndex)); + ReturnErrorOnFailure(DataModelLogger::LogValue("lastModifiedFabricIndex", indent + 1, value.lastModifiedFabricIndex)); ReturnErrorOnFailure(DataModelLogger::LogValue("nextCredentialIndex", indent + 1, value.nextCredentialIndex)); DataModelLogger::LogString(indent, "}"); return CHIP_NO_ERROR; @@ -5631,6 +5633,11 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("CredentialRulesSupport", 1, value); } + case DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::Id: { + uint8_t value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("NumberOfCredentialsSupportedPerUser", 1, value); + } case DoorLock::Attributes::EnableLogging::Id: { bool value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index b1feff556f53a2..4d333a56b6787c 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -51166,7 +51166,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand { public: DL_UsersAndCredentialsSuite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("DL_UsersAndCredentials", 102, credsIssuerConfig) + TestCommand("DL_UsersAndCredentials", 113, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -51735,6 +51735,10 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); } @@ -51809,6 +51813,12 @@ class DL_UsersAndCredentialsSuite : public TestCommand 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(), 1)); + + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); } @@ -51863,6 +51873,10 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } @@ -51933,6 +51947,12 @@ class DL_UsersAndCredentialsSuite : public TestCommand 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(), 1)); + + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } @@ -51967,7 +51987,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 3)); + VerifyOrReturn(CheckValue("status", value.status, 133)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); @@ -52058,12 +52078,12 @@ class DL_UsersAndCredentialsSuite : public TestCommand { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 133)); + VerifyOrReturn(CheckValue("status", value.status, 2)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 5U)); } break; case 61: @@ -52084,12 +52104,12 @@ class DL_UsersAndCredentialsSuite : public TestCommand { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 2)); + VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 5U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } break; case 63: @@ -52099,10 +52119,11 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("status", value.status, 0)); - VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 2U)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); } break; case 64: @@ -52110,13 +52131,12 @@ class DL_UsersAndCredentialsSuite : public TestCommand { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0)); + VerifyOrReturn(CheckValue("status", value.status, 2)); - VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 2U)); + VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 5U)); } break; case 65: @@ -52124,7 +52144,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 2)); + VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); @@ -52134,18 +52154,61 @@ class DL_UsersAndCredentialsSuite : public TestCommand break; case 66: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 1U)); + + 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(), 1)); + + VerifyOrReturn(CheckValueNonNull("userType", value.userType)); + VerifyOrReturn(CheckValue("userType.Value()", value.userType.Value(), 0)); + + VerifyOrReturn(CheckValueNonNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValue("credentialRule.Value()", value.credentialRule.Value(), 0)); + + VerifyOrReturn(CheckValueNonNull("credentials", value.credentials)); + { + auto iter_1 = value.credentials.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 0)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialType", iter_1.GetValue().credentialType, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialIndex", iter_1.GetValue().credentialIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialIndex", iter_1.GetValue().credentialIndex, 2U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialIndex", iter_1.GetValue().credentialIndex, 4U)); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 3)); + } + + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1)); + + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); + + VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); + VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 3U)); + } break; case 67: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; + chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("credentialExists", value.credentialExists, false)); + VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 6U)); } break; case 68: @@ -52173,9 +52236,18 @@ class DL_UsersAndCredentialsSuite : public TestCommand { auto iter_1 = value.credentials.Value().begin(); VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("credentials.Value()[0].credentialType", iter_1.GetValue().credentialType, 2)); - VerifyOrReturn(CheckValue("credentials.Value()[0].credentialIndex", iter_1.GetValue().credentialIndex, 2U)); - VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialType", iter_1.GetValue().credentialType, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialIndex", iter_1.GetValue().credentialIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialIndex", iter_1.GetValue().credentialIndex, 2U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialIndex", iter_1.GetValue().credentialIndex, 4U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 3)); + VerifyOrReturn(CheckValue("credentials.Value()[3].credentialType", iter_1.GetValue().credentialType, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[3].credentialIndex", iter_1.GetValue().credentialIndex, 5U)); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 4)); } VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); @@ -52200,11 +52272,81 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); - VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 6U)); } break; case 71: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 1U)); + + 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(), 1)); + + VerifyOrReturn(CheckValueNonNull("userType", value.userType)); + VerifyOrReturn(CheckValue("userType.Value()", value.userType.Value(), 0)); + + VerifyOrReturn(CheckValueNonNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValue("credentialRule.Value()", value.credentialRule.Value(), 0)); + + VerifyOrReturn(CheckValueNonNull("credentials", value.credentials)); + { + auto iter_1 = value.credentials.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 0)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialIndex", iter_1.GetValue().credentialIndex, 2U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialType", iter_1.GetValue().credentialType, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[1].credentialIndex", iter_1.GetValue().credentialIndex, 4U)); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 2)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialType", iter_1.GetValue().credentialType, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[2].credentialIndex", iter_1.GetValue().credentialIndex, 5U)); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 3)); + } + + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1)); + + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); + + VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); + VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 3U)); + } + break; + case 72: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 73: + 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(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 6U)); + } + break; + case 74: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52231,7 +52373,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 3U)); } break; - case 72: + case 75: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52245,10 +52387,10 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } break; - case 73: + case 76: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 74: + case 77: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52257,11 +52399,15 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); } break; - case 75: + case 78: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52270,38 +52416,72 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } break; - case 76: + case 79: + 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(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 6U)); + } + break; + case 80: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("userIndex", value.userIndex, 1U)); - VerifyOrReturn(CheckValueNull("userName", value.userName)); + VerifyOrReturn(CheckValueNonNull("userName", value.userName)); + VerifyOrReturn(CheckValueAsString("userName.Value()", value.userName.Value(), chip::CharSpan("", 0))); VerifyOrReturn(CheckValueNull("userUniqueId", value.userUniqueId)); - VerifyOrReturn(CheckValueNull("userStatus", value.userStatus)); + VerifyOrReturn(CheckValueNonNull("userStatus", value.userStatus)); + VerifyOrReturn(CheckValue("userStatus.Value()", value.userStatus.Value(), 1)); - VerifyOrReturn(CheckValueNull("userType", value.userType)); + VerifyOrReturn(CheckValueNonNull("userType", value.userType)); + VerifyOrReturn(CheckValue("userType.Value()", value.userType.Value(), 0)); - VerifyOrReturn(CheckValueNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValueNonNull("credentialRule", value.credentialRule)); + VerifyOrReturn(CheckValue("credentialRule.Value()", value.credentialRule.Value(), 0)); - VerifyOrReturn(CheckValueNull("credentials", value.credentials)); + VerifyOrReturn(CheckValueNonNull("credentials", value.credentials)); + { + auto iter_1 = value.credentials.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes("credentials.Value()", iter_1, 0)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialType", iter_1.GetValue().credentialType, 1)); + VerifyOrReturn(CheckValue("credentials.Value()[0].credentialIndex", iter_1.GetValue().credentialIndex, 5U)); + VerifyOrReturn(CheckNoMoreListItems("credentials.Value()", iter_1, 1)); + } - VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValueNonNull("creatorFabricIndex", value.creatorFabricIndex)); + VerifyOrReturn(CheckValue("creatorFabricIndex.Value()", value.creatorFabricIndex.Value(), 1)); - VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); } break; - case 77: + case 81: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52328,7 +52508,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 3U)); } break; - case 78: + case 82: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52336,13 +52516,13 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 1U)); + VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 2U)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); } break; - case 79: + case 83: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52350,13 +52530,13 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 2U)); + VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 3U)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } break; - case 80: + case 84: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52364,16 +52544,16 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("status", value.status, 0)); VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 3U)); + VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 4U)); VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 7U)); } break; - case 81: + case 85: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 82: + case 86: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52382,11 +52562,15 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); } break; - case 83: + case 87: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52395,11 +52579,15 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); } break; - case 84: + case 88: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52408,11 +52596,15 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); + + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 7U)); } break; - case 85: + case 89: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52439,7 +52631,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); } break; - case 86: + case 90: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52466,7 +52658,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 3U)); } break; - case 87: + case 91: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52493,7 +52685,34 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 4U)); } break; - case 88: + case 92: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("userIndex", value.userIndex, 4U)); + + 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(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); + VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 5U)); + } + break; + case 93: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52505,7 +52724,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); } break; - case 89: + case 94: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52518,7 +52737,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); } break; - case 90: + case 95: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52558,7 +52777,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); } break; - case 91: + case 96: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; @@ -52568,10 +52787,16 @@ class DL_UsersAndCredentialsSuite : public TestCommand 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(), 1)); + + VerifyOrReturn(CheckValueNonNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValue("lastModifiedFabricIndex.Value()", value.lastModifiedFabricIndex.Value(), 1)); + VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); } break; - case 92: + case 97: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; @@ -52583,28 +52808,28 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); } break; - case 93: + case 98: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 94: + case 99: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 95: + case 100: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 96: + case 101: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 97: + case 102: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 98: + case 103: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); break; - case 99: + case 104: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 100: + case 105: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType value; @@ -52625,22 +52850,105 @@ class DL_UsersAndCredentialsSuite : public TestCommand VerifyOrReturn(CheckValueNull("creatorFabricIndex", value.creatorFabricIndex)); - VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + VerifyOrReturn(CheckValueNull("lastModifiedFabricIndex", value.lastModifiedFabricIndex)); + + VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); + VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); + } + break; + case 106: + 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 107: + 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, 0)); + + VerifyOrReturn(CheckValueNonNull("userIndex", value.userIndex)); + VerifyOrReturn(CheckValue("userIndex.Value()", value.userIndex.Value(), 1U)); + + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 2U)); + } + break; + case 108: + 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, 0)); + + VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 3U)); + } + break; + case 109: + 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, 0)); + + VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 4U)); + } + break; + case 110: + 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, 0)); + + VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); + + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 5U)); + } + break; + case 111: + 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, 0)); + + VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValueNonNull("nextUserIndex", value.nextUserIndex)); - VerifyOrReturn(CheckValue("nextUserIndex.Value()", value.nextUserIndex.Value(), 2U)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 6U)); } break; - case 101: + case 112: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType value; + chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("credentialExists", value.credentialExists, false)); + VerifyOrReturn(CheckValue("status", value.status, 137)); VerifyOrReturn(CheckValueNull("userIndex", value.userIndex)); - VerifyOrReturn(CheckValueNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValueNonNull("nextCredentialIndex", value.nextCredentialIndex)); + VerifyOrReturn(CheckValue("nextCredentialIndex.Value()", value.nextCredentialIndex.Value(), 7U)); } break; default: @@ -53166,23 +53474,7 @@ class DL_UsersAndCredentialsSuite : public TestCommand chip::Optional(10000)); } case 53: { - LogStep(53, "Create new PIN credential and try to add it to existing user"); - chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; - value.operationType = static_cast(0); - - value.credential.credentialType = static_cast(1); - value.credential.credentialIndex = 3U; - - value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("123465garbage: 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)); - } - case 54: { - LogStep(54, "Create new credential and try to add it to 0 user"); + LogStep(53, "Create new credential and try to add it to 0 user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53197,8 +53489,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 55: { - LogStep(55, "Create new credential and try to add it to out-of-bounds user"); + case 54: { + LogStep(54, "Create new credential and try to add it to out-of-bounds user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53213,8 +53505,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 56: { - LogStep(56, "Create new PIN with too short data"); + case 55: { + LogStep(55, "Create new PIN with too short data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53229,8 +53521,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 57: { - LogStep(57, "Create new PIN with too long data"); + case 56: { + LogStep(56, "Create new PIN with too long data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53245,8 +53537,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 58: { - LogStep(58, "Create new RFID with too short data"); + case 57: { + LogStep(57, "Create new RFID with too short data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53261,8 +53553,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 59: { - LogStep(59, "Create new PIN with Programming user type fails"); + case 58: { + LogStep(58, "Create new PIN with Programming user type fails"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53278,8 +53570,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 60: { - LogStep(60, "Create new RFID with too short data"); + case 59: { + LogStep(59, "Create new RFID with too short data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53295,8 +53587,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 61: { - LogStep(61, "Create new PIN credential with data the would cause duplicate"); + case 60: { + LogStep(60, "Create new PIN credential with data the would cause duplicate"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53310,8 +53602,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 62: { - LogStep(62, "Create new RFID credential with data the would cause duplicate"); + case 61: { + LogStep(61, "Create new RFID credential with data the would cause duplicate"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53326,8 +53618,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 63: { - LogStep(63, "Modify credentialData of existing PIN credential"); + case 62: { + LogStep(62, "Modify credentialData of existing PIN credential"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(2); @@ -53342,8 +53634,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 64: { - LogStep(64, "Verify that credential was changed by creating new credential with old data"); + case 63: { + LogStep(63, "Verify that credential was changed by creating new credential with old data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53357,8 +53649,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 65: { - LogStep(65, "Verify that credential was changed by creating new credential with new data"); + case 64: { + LogStep(64, "Verify that credential was changed by creating new credential with new data"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53372,8 +53664,53 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } + case 65: { + LogStep(65, "Create new RFID credential and add it to existing user"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(2); + value.credential.credentialIndex = 4U; + + value.credentialData = + chip::ByteSpan(chip::Uint8::from_const_char("rfid_data_7890garbage: not in length on purpose"), 14); + 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)); + } case 66: { - LogStep(66, "Clear first PIN credential"); + LogStep(66, "Verify modified user"); + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 1U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); + } + case 67: { + LogStep(67, "Create new RFID credential and add it to existing user"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(1); + value.credential.credentialIndex = 5U; + + value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("789012garbage: 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)); + } + case 68: { + LogStep(68, "Verify modified user"); + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 1U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); + } + case 69: { + LogStep(69, "Clear first PIN credential"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53383,8 +53720,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 67: { - LogStep(67, "Read back the credential and make sure it is deleted"); + case 70: { + LogStep(70, "Read back the credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(1); @@ -53392,14 +53729,14 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 68: { - LogStep(68, "Read the user back and make sure PIN credential is deleted"); + case 71: { + LogStep(71, "Read the user back and make sure PIN credential is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 69: { - LogStep(69, "Clear the second PIN credential"); + case 72: { + LogStep(72, "Clear the second PIN credential"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53409,8 +53746,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 70: { - LogStep(70, "Read back the credential and make sure it is deleted"); + case 73: { + LogStep(73, "Read back the credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(1); @@ -53418,14 +53755,14 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 71: { - LogStep(71, "Read the user back and make sure related user is deleted"); + case 74: { + LogStep(74, "Read the user back and make sure related user is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 2U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 72: { - LogStep(72, "Create new RFID credential with user"); + case 75: { + LogStep(75, "Create new RFID credential with user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53440,8 +53777,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 73: { - LogStep(73, "Clear all the RFID credentials"); + case 76: { + LogStep(76, "Clear all the RFID credentials"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53451,8 +53788,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 74: { - LogStep(74, "Read back the fist RFID credential and make sure it is deleted"); + case 77: { + LogStep(77, "Read back the fist RFID credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(2); @@ -53460,8 +53797,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 75: { - LogStep(75, "Read back the second RFID credential and make sure it is deleted"); + case 78: { + LogStep(78, "Read back the second RFID credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(2); @@ -53469,20 +53806,29 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 76: { - LogStep(76, "Read the user related with first RFID back and make sure it is deleted"); + case 79: { + LogStep(79, "Read back the third RFID credential and make sure it is deleted"); + chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; + + value.credential.credentialType = static_cast(2); + value.credential.credentialIndex = 4U; + + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); + } + case 80: { + LogStep(80, "Read the user related with first RFID back and make sure it has only PIN credential"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 77: { - LogStep(77, "Read the user related with second RFID back and make sure it is deleted"); + case 81: { + LogStep(81, "Read the user related with second RFID back and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 2U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 78: { - LogStep(78, "Create new PIN credential with user"); + case 82: { + LogStep(82, "Create new PIN credential with user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53496,8 +53842,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 79: { - LogStep(79, "Create new RFID credential with user"); + case 83: { + LogStep(83, "Create new RFID credential with user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53512,8 +53858,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 80: { - LogStep(80, "Create another RFID credential with user"); + case 84: { + LogStep(84, "Create another RFID credential with user"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53528,15 +53874,15 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 81: { - LogStep(81, "Clear all the credentials"); + case 85: { + LogStep(85, "Clear all the credentials"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNull(); return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 82: { - LogStep(82, "Read back the first PIN credential and make sure it is deleted"); + case 86: { + LogStep(86, "Read back the first PIN credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(1); @@ -53544,8 +53890,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 83: { - LogStep(83, "Read back the first RFID credential and make sure it is deleted"); + case 87: { + LogStep(87, "Read back the first RFID credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(2); @@ -53553,8 +53899,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 84: { - LogStep(84, "Read back the second PIN credential and make sure it is deleted"); + case 88: { + LogStep(88, "Read back the second PIN credential and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(1); @@ -53562,26 +53908,32 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 85: { - LogStep(85, "Read the user related with first PIN back and make sure it is deleted"); + case 89: { + LogStep(89, "Read the user related with first PIN back and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 86: { - LogStep(86, "Read the user related with first RFID back and make sure it is deleted"); + case 90: { + LogStep(90, "Read the user related with first RFID back and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 2U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 87: { - LogStep(87, "Read the user related with second PIN back and make sure it is deleted"); + case 91: { + LogStep(91, "Read the user related with second PIN back and make sure it is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 3U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 88: { - LogStep(88, "Create new Programming PIN credential with invalid index"); + case 92: { + LogStep(92, "Read the user related with last RFID back and make sure it is deleted"); + chip::app::Clusters::DoorLock::Commands::GetUser::Type value; + value.userIndex = 4U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); + } + case 93: { + LogStep(93, "Create new Programming PIN credential with invalid index"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53595,8 +53947,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 89: { - LogStep(89, "Create new Programming PIN credential with valid index"); + case 94: { + LogStep(94, "Create new Programming PIN credential with valid index"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(0); @@ -53610,14 +53962,14 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 90: { - LogStep(90, "Verify created user"); + case 95: { + LogStep(95, "Verify created user"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 91: { - LogStep(91, "Verify created programming PIN credential"); + case 96: { + LogStep(96, "Verify created programming PIN credential"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(0); @@ -53625,8 +53977,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } - case 92: { - LogStep(92, "Modify the Programming PIN credential"); + case 97: { + LogStep(97, "Modify the Programming PIN credential"); chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; value.operationType = static_cast(2); @@ -53640,8 +53992,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::SetCredential::Id, value, chip::Optional(10000)); } - case 93: { - LogStep(93, "Clearing Programming PIN fails"); + case 98: { + LogStep(98, "Clearing Programming PIN fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53651,8 +54003,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 94: { - LogStep(94, "Clearing Programming PIN with invalid index fails"); + case 99: { + LogStep(99, "Clearing Programming PIN with invalid index fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53662,8 +54014,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 95: { - LogStep(95, "Clearing PIN credential with zero index fails"); + case 100: { + LogStep(100, "Clearing PIN credential with zero index fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53673,8 +54025,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 96: { - LogStep(96, "Clearing PIN credential with out-of-bound index fails"); + case 101: { + LogStep(101, "Clearing PIN credential with out-of-bound index fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53684,8 +54036,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 97: { - LogStep(97, "Clearing RFID credential with zero index fails"); + case 102: { + LogStep(102, "Clearing RFID credential with zero index fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53695,8 +54047,8 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 98: { - LogStep(98, "Clearing RFID credential with out-of-bound index fails"); + case 103: { + LogStep(103, "Clearing RFID credential with out-of-bound index fails"); chip::app::Clusters::DoorLock::Commands::ClearCredential::Type value; value.credential.SetNonNull(); @@ -53706,21 +54058,21 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearCredential::Id, value, chip::Optional(10000)); } - case 99: { - LogStep(99, "Clear the Programming PIN user"); + case 104: { + LogStep(104, "Clear the Programming PIN user"); chip::app::Clusters::DoorLock::Commands::ClearUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::ClearUser::Id, value, chip::Optional(10000)); } - case 100: { - LogStep(100, "Make sure Programming PIN user is deleted"); + case 105: { + LogStep(105, "Make sure Programming PIN user is deleted"); chip::app::Clusters::DoorLock::Commands::GetUser::Type value; value.userIndex = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetUser::Id, value); } - case 101: { - LogStep(101, "Make sure programming PIN credential is deleted"); + case 106: { + LogStep(106, "Make sure programming PIN credential is deleted"); chip::app::Clusters::DoorLock::Commands::GetCredentialStatus::Type value; value.credential.credentialType = static_cast(0); @@ -53728,6 +54080,101 @@ class DL_UsersAndCredentialsSuite : public TestCommand return SendCommand(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Commands::GetCredentialStatus::Id, value); } + case 107: { + LogStep(107, "Create new PIN credential and user"); + 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("000000garbage: 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)); + } + case 108: { + LogStep(108, "Create second PIN credential and add it to existing user"); + 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("000001garbage: 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)); + } + case 109: { + LogStep(109, "Create third PIN credential and add it to existing user"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(1); + value.credential.credentialIndex = 3U; + + value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("000002garbage: 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)); + } + case 110: { + LogStep(110, "Create fourth PIN credential and add it to existing user"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(1); + value.credential.credentialIndex = 4U; + + value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("000003garbage: 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)); + } + case 111: { + LogStep(111, "Create fifth PIN credential and add it to existing user"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(1); + value.credential.credentialIndex = 5U; + + value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("000004garbage: 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)); + } + case 112: { + LogStep(112, "Try to create sixth PIN credential and make sure it fails"); + chip::app::Clusters::DoorLock::Commands::SetCredential::Type value; + value.operationType = static_cast(0); + + value.credential.credentialType = static_cast(1); + value.credential.credentialIndex = 6U; + + value.credentialData = chip::ByteSpan(chip::Uint8::from_const_char("000005garbage: 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)); + } } return CHIP_NO_ERROR; } diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h index b1f6f2917c6626..46e8f799ca76ee 100644 --- a/zzz_generated/lock-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h @@ -483,7 +483,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 241 +#define GENERATED_ATTRIBUTE_COUNT 242 #define GENERATED_ATTRIBUTES \ { \ \ @@ -827,6 +827,7 @@ { 0x00000019, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(20) }, /* MaxRFIDCodeLength */ \ { 0x0000001A, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(10) }, /* MinRFIDCodeLength */ \ { 0x0000001B, ZAP_TYPE(BITMAP8), 1, 0, ZAP_SIMPLE_DEFAULT(1) }, /* CredentialRulesSupport */ \ + { 0x0000001C, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(5) }, /* NumberOfCredentialsSupportedPerUser */ \ { 0x00000021, ZAP_TYPE(CHAR_STRING), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(255) }, /* Language */ \ { 0x00000023, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(258) }, /* AutoRelockTime */ \ { 0x00000024, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -1312,8 +1313,8 @@ /* Endpoint: 1, Cluster: Door Lock (server) */ \ .clusterId = 0x00000101, \ .attributes = ZAP_ATTRIBUTE_INDEX(215), \ - .attributeCount = 26, \ - .clusterSize = 40, \ + .attributeCount = 27, \ + .clusterSize = 41, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayDoorLockServer, \ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 73 ) ,\ @@ -1330,7 +1331,7 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 21, 498 }, { ZAP_CLUSTER_INDEX(21), 6, 193 }, \ + { ZAP_CLUSTER_INDEX(0), 21, 498 }, { ZAP_CLUSTER_INDEX(21), 6, 194 }, \ } // Largest attribute size is needed for various buffers @@ -1342,7 +1343,7 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, #define ATTRIBUTE_SINGLETONS_SIZE (37) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (691) +#define ATTRIBUTE_MAX_SIZE (692) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (2)