Skip to content

Commit ef42589

Browse files
authored
Adding default value column for command args, event fields and struct items (#1580)
* Adding default value column for command args, event fields and struct items: - Default values can be defined for command args, event fields and struct items. These default values can be accessed through zcl static helpers - Added tests
1 parent a4e2781 commit ef42589

12 files changed

Lines changed: 85 additions & 39 deletions

File tree

src-electron/db/db-mapping.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ exports.map = {
162162
fieldIdentifier: x.FIELD_IDENTIFIER,
163163
name: x.NAME,
164164
type: x.TYPE,
165+
defaultValue: x.DEFAULT_VALUE,
165166
isArray: dbApi.fromDbBool(x.IS_ARRAY),
166167
isNullable: dbApi.fromDbBool(x.IS_NULLABLE),
167168
isOptional: dbApi.fromDbBool(x.IS_OPTIONAL)
@@ -209,6 +210,7 @@ exports.map = {
209210
clusterDefineName: x.CLUSTER_DEFINE_NAME,
210211
argName: x.ARG_NAME,
211212
argType: x.ARG_TYPE,
213+
argDefaultValue: x.ARG_DEFAULT_VALUE,
212214
argIsArray: dbApi.fromDbBool(x.ARG_IS_ARRAY),
213215
argPresentIf: x.ARG_PRESENT_IF,
214216
argCountArg: x.ARG_COUNT_ARG,
@@ -241,6 +243,7 @@ exports.map = {
241243
max: x.MAX,
242244
minLength: x.MIN_LENGTH,
243245
maxLength: x.MAX_LENGTH,
246+
defaultValue: x.DEFAULT_VALUE,
244247
code: x.CODE,
245248
isArray: dbApi.fromDbBool(x.IS_ARRAY),
246249
presentIf: x.PRESENT_IF,
@@ -390,6 +393,7 @@ exports.map = {
390393
type: x.TYPE,
391394
minLength: x.MIN_LENGTH,
392395
maxLength: x.MAX_LENGTH,
396+
defaultValue: x.DEFAULT_VALUE,
393397
isArray: dbApi.fromDbBool(x.IS_ARRAY),
394398
isEnum: dbApi.fromDbBool(x.IS_ENUM),
395399
isWritable: dbApi.fromDbBool(x.IS_WRITABLE),

src-electron/db/query-command.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -880,19 +880,19 @@ SELECT
880880
0
881881
END AS OUTGOING,
882882
COUNT(COMMAND.MANUFACTURER_CODE) OVER () AS MANUFACTURING_SPECIFIC_COMMAND_COUNT
883-
FROM
883+
FROM
884884
COMMAND
885-
INNER JOIN
885+
INNER JOIN
886886
ENDPOINT_TYPE_COMMAND
887-
ON
887+
ON
888888
ENDPOINT_TYPE_COMMAND.COMMAND_REF = COMMAND.COMMAND_ID
889-
INNER JOIN
889+
INNER JOIN
890890
ENDPOINT_TYPE_CLUSTER
891-
ON
891+
ON
892892
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = ENDPOINT_TYPE_COMMAND.ENDPOINT_TYPE_CLUSTER_REF
893-
INNER JOIN
893+
INNER JOIN
894894
CLUSTER
895-
ON
895+
ON
896896
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
897897
WHERE
898898
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_REF IN (${endpointTypeIds})
@@ -1139,6 +1139,7 @@ async function selectAllCommandsWithArguments(db, packageId) {
11391139
argMax: x.ARG_MAX,
11401140
argMinLength: x.ARG_MIN_LENGTH,
11411141
argMaxLength: x.ARG_MAX_LENGTH,
1142+
argDefaultValue: x.ARG_DEFAULT_VALUE,
11421143
argFieldId: x.FIELD_IDENTIFIER,
11431144
argIsArray: dbApi.fromDbBool(x.ARG_IS_ARRAY),
11441145
argPresentIf: x.ARG_PRESENT_IF,
@@ -1175,6 +1176,7 @@ SELECT
11751176
CA.MAX as ARG_MAX,
11761177
CA.MIN_LENGTH as ARG_MIN_LENGTH,
11771178
CA.MAX_LENGTH as ARG_MAX_LENGTH,
1179+
CA.DEFAULT_VALUE AS ARG_DEFAULT_VALUE,
11781180
CA.FIELD_IDENTIFIER,
11791181
CA.IS_ARRAY AS ARG_IS_ARRAY,
11801182
CA.PRESENT_IF AS ARG_PRESENT_IF,
@@ -1212,6 +1214,7 @@ ORDER BY
12121214
max: x.max,
12131215
minLength: x.minLength,
12141216
maxLength: x.maxLength,
1217+
defaultValue: x.argDefaultValue,
12151218
fieldId: x.argFieldId,
12161219
isArray: x.argIsArray,
12171220
presentIf: x.argPresentIf,
@@ -1228,6 +1231,7 @@ ORDER BY
12281231
delete x.argMax
12291232
delete x.argMinLength
12301233
delete x.argMaxLength
1234+
delete x.argDefaultValue
12311235
delete x.argFieldId
12321236
delete x.argIsArray
12331237
delete x.argPresentIf
@@ -1496,12 +1500,12 @@ SELECT
14961500
IS_FABRIC_SCOPED,
14971501
RESPONSE_REF,
14981502
RESPONSE_NAME
1499-
FROM
1503+
FROM
15001504
COMMAND
1501-
WHERE
1502-
CLUSTER_REF IS NOT NULL
1505+
WHERE
1506+
CLUSTER_REF IS NOT NULL
15031507
AND PACKAGE_REF = ?
1504-
ORDER BY
1508+
ORDER BY
15051509
CODE`,
15061510
[packageId]
15071511
)
@@ -1528,6 +1532,7 @@ SELECT
15281532
COMMAND_ARG.MAX,
15291533
COMMAND_ARG.MIN_LENGTH,
15301534
COMMAND_ARG.MAX_LENGTH,
1535+
COMMAND_ARG.DEFAULT_VALUE,
15311536
COMMAND_ARG.IS_ARRAY,
15321537
COMMAND_ARG.PRESENT_IF,
15331538
COMMAND_ARG.IS_NULLABLE,
@@ -1585,6 +1590,7 @@ SELECT
15851590
MAX,
15861591
MIN_LENGTH,
15871592
MAX_LENGTH,
1593+
DEFAULT_VALUE,
15881594
IS_ARRAY,
15891595
PRESENT_IF,
15901596
IS_NULLABLE,
@@ -1639,6 +1645,7 @@ SELECT
16391645
CA.MAX AS ARG_MAX,
16401646
CA.MIN_LENGTH AS ARG_MIN_LENGTH,
16411647
CA.MAX_LENGTH AS ARG_MAX_LENGTH,
1648+
CA.DEFAULT_VALUE AS ARG_DEFAULT_VALUE,
16421649
CA.IS_ARRAY AS ARG_IS_ARRAY,
16431650
CA.PRESENT_IF AS ARG_PRESENT_IF,
16441651
CA.IS_NULLABLE AS ARG_IS_NULLABLE,
@@ -1764,20 +1771,20 @@ async function selectAllCommandDetailsFromEnabledClusters(
17641771
CLUSTER.CLUSTER_ID,
17651772
ENDPOINT_TYPE_CLUSTER.ENABLED,
17661773
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID
1767-
FROM
1774+
FROM
17681775
COMMAND
1769-
INNER JOIN
1776+
INNER JOIN
17701777
CLUSTER
1771-
ON
1778+
ON
17721779
COMMAND.CLUSTER_REF = CLUSTER.CLUSTER_ID
1773-
INNER JOIN
1780+
INNER JOIN
17741781
ENDPOINT_TYPE_CLUSTER
1775-
ON
1782+
ON
17761783
CLUSTER.CLUSTER_ID = ENDPOINT_TYPE_CLUSTER.CLUSTER_REF
17771784
WHERE
17781785
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID IN (${endpointTypeClusterRef})
17791786
AND COMMAND.PACKAGE_REF IN (${dbApi.toInClause(packageIds)})
1780-
GROUP BY
1787+
GROUP BY
17811788
COMMAND.NAME
17821789
`
17831790
)

src-electron/db/query-event.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ SELECT
218218
FIELD_IDENTIFIER,
219219
NAME,
220220
TYPE,
221+
DEFAULT_VALUE,
221222
IS_ARRAY,
222223
IS_NULLABLE,
223224
IS_OPTIONAL

src-electron/db/query-loader.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,14 @@ INSERT INTO EVENT_FIELD (
7777
FIELD_IDENTIFIER,
7878
NAME,
7979
TYPE,
80+
DEFAULT_VALUE,
8081
IS_ARRAY,
8182
IS_NULLABLE,
8283
IS_OPTIONAL,
8384
INTRODUCED_IN_REF,
8485
REMOVED_IN_REF
8586
) VALUES (
86-
?, ?, ?, ?, ?, ?, ?,
87+
?, ?, ?, ?, ?, ?, ?, ?,
8788
(SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?),
8889
(SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?)
8990
)
@@ -122,6 +123,7 @@ INSERT INTO COMMAND_ARG (
122123
MAX,
123124
MIN_LENGTH,
124125
MAX_LENGTH,
126+
DEFAULT_VALUE,
125127
IS_ARRAY,
126128
PRESENT_IF,
127129
IS_NULLABLE,
@@ -131,7 +133,7 @@ INSERT INTO COMMAND_ARG (
131133
INTRODUCED_IN_REF,
132134
REMOVED_IN_REF
133135
) VALUES (
134-
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
136+
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
135137
(SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?),
136138
(SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?)
137139
)`
@@ -333,6 +335,7 @@ function fieldMap(eventId, packageId, fields) {
333335
field.fieldIdentifier,
334336
field.name,
335337
field.type,
338+
field.defaultValue,
336339
dbApi.toDbBool(field.isArray),
337340
dbApi.toDbBool(field.isNullable),
338341
dbApi.toDbBool(field.isOptional),
@@ -360,6 +363,7 @@ function argMap(cmdId, packageId, args) {
360363
arg.max,
361364
arg.minLength,
362365
arg.maxLength,
366+
arg.defaultValue,
363367
dbApi.toDbBool(arg.isArray),
364368
arg.presentIf,
365369
dbApi.toDbBool(arg.isNullable),
@@ -2398,7 +2402,7 @@ async function insertStructItems(db, packageIds, data) {
23982402
db,
23992403
`
24002404
INSERT INTO
2401-
STRUCT_ITEM (STRUCT_REF, NAME, FIELD_IDENTIFIER, IS_ARRAY, IS_ENUM, MIN_LENGTH, MAX_LENGTH, IS_WRITABLE, IS_NULLABLE, IS_OPTIONAL, IS_FABRIC_SENSITIVE, SIZE, DATA_TYPE_REF)
2405+
STRUCT_ITEM (STRUCT_REF, NAME, FIELD_IDENTIFIER, IS_ARRAY, IS_ENUM, MIN_LENGTH, MAX_LENGTH, DEFAULT_VALUE, IS_WRITABLE, IS_NULLABLE, IS_OPTIONAL, IS_FABRIC_SENSITIVE, SIZE, DATA_TYPE_REF)
24022406
VALUES (
24032407
(SELECT
24042408
CASE
@@ -2422,6 +2426,7 @@ async function insertStructItems(db, packageIds, data) {
24222426
?,
24232427
?,
24242428
?,
2429+
?,
24252430
(SELECT
24262431
DATA_TYPE_ID
24272432
FROM
@@ -2445,6 +2450,7 @@ async function insertStructItems(db, packageIds, data) {
24452450
at.isEnum,
24462451
at.minLength,
24472452
at.maxLength,
2453+
at.defaultValue,
24482454
at.isWritable,
24492455
at.isNullable,
24502456
at.isOptional,

src-electron/db/query-zcl.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@ SELECT
459459
STRUCT_ITEM.IS_ENUM,
460460
STRUCT_ITEM.MIN_LENGTH,
461461
STRUCT_ITEM.MAX_LENGTH,
462+
STRUCT_ITEM.DEFAULT_VALUE,
462463
STRUCT_ITEM.IS_WRITABLE,
463464
STRUCT_ITEM.IS_NULLABLE,
464465
STRUCT_ITEM.IS_OPTIONAL,

src-electron/db/zap-schema.sql

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ CREATE TABLE IF NOT EXISTS "COMMAND_ARG" (
206206
"MAX" text,
207207
"MIN_LENGTH" integer,
208208
"MAX_LENGTH" integer,
209+
"DEFAULT_VALUE" text,
209210
"IS_ARRAY" integer,
210211
"PRESENT_IF" text,
211212
"IS_NULLABLE" integer,
@@ -253,6 +254,7 @@ CREATE TABLE IF NOT EXISTS "EVENT_FIELD" (
253254
"FIELD_IDENTIFIER" integer,
254255
"NAME" text,
255256
"TYPE" text,
257+
"DEFAULT_VALUE" text,
256258
"IS_ARRAY" integer,
257259
"IS_NULLABLE" integer,
258260
"IS_OPTIONAL" integer,
@@ -679,6 +681,7 @@ CREATE TABLE IF NOT EXISTS STRUCT_ITEM (
679681
IS_ENUM integer,
680682
MIN_LENGTH integer,
681683
MAX_LENGTH integer,
684+
DEFAULT_VALUE text,
682685
IS_WRITABLE integer,
683686
IS_NULLABLE integer,
684687
IS_OPTIONAL integer,
@@ -3433,7 +3436,7 @@ BEGIN
34333436
ON
34343437
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
34353438
WHERE
3436-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
3439+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
34373440
)
34383441
||
34393442
(
@@ -3551,7 +3554,7 @@ BEGIN
35513554
ON
35523555
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
35533556
WHERE
3554-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
3557+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
35553558
)
35563559
||
35573560
(
@@ -3578,7 +3581,7 @@ BEGIN
35783581
C1.RESPONSE_REF = ETC.COMMAND_REF
35793582
WHERE
35803583
ETC.ENDPOINT_TYPE_COMMAND_ID = new.ENDPOINT_TYPE_COMMAND_ID
3581-
)
3584+
)
35823585
);
35833586
END;
35843587

@@ -3663,7 +3666,7 @@ BEGIN
36633666
ON
36643667
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
36653668
WHERE
3666-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
3669+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
36673670
)
36683671
||
36693672
(
@@ -3794,7 +3797,7 @@ BEGIN
37943797
ON
37953798
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
37963799
WHERE
3797-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
3800+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
37983801
)
37993802
||
38003803
(
@@ -3821,7 +3824,7 @@ BEGIN
38213824
C2.COMMAND_ID = C1.RESPONSE_REF
38223825
WHERE
38233826
ETC.ENDPOINT_TYPE_COMMAND_ID = new.ENDPOINT_TYPE_COMMAND_ID
3824-
)
3827+
)
38253828
);
38263829
END;
38273830

@@ -3909,7 +3912,7 @@ BEGIN
39093912
ON
39103913
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
39113914
WHERE
3912-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
3915+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
39133916
)
39143917
||
39153918
(
@@ -4027,7 +4030,7 @@ BEGIN
40274030
ON
40284031
ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID
40294032
WHERE
4030-
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
4033+
ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_CLUSTER_ID = new.ENDPOINT_TYPE_CLUSTER_REF
40314034
)
40324035
||
40334036
(
@@ -4054,7 +4057,7 @@ BEGIN
40544057
C1.RESPONSE_REF = ETC.COMMAND_REF
40554058
WHERE
40564059
ETC.ENDPOINT_TYPE_COMMAND_ID = new.ENDPOINT_TYPE_COMMAND_ID
4057-
)
4060+
)
40584061
);
40594062
END;
40604063

src-electron/zcl/zcl-loader-silabs.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ function prepareCluster(cluster, context, isExtension = false) {
524524
max: arg.$.max,
525525
minLength: 0,
526526
maxLength: arg.$.length ? arg.$.length : null,
527+
defaultValue: arg.$.default ? arg.$.default : null,
527528
isArray: arg.$.array == 'true' ? 1 : 0,
528529
presentIf: arg.$.presentIf,
529530
isNullable: arg.$.isNullable == 'true' ? true : false,
@@ -571,6 +572,7 @@ function prepareCluster(cluster, context, isExtension = false) {
571572
ev.fields.push({
572573
name: field.$.name,
573574
type: field.$.type,
575+
defaultValue: field.$.default ? field.$.default : null,
574576
isArray: field.$.array == 'true' ? 1 : 0,
575577
isNullable: field.$.isNullable == 'true' ? true : false,
576578
isOptional: field.$.optional == 'true' ? true : false,
@@ -1634,6 +1636,7 @@ async function processStructItems(db, filePath, packageIds, data, context) {
16341636
fieldIdentifier: lastFieldId,
16351637
minLength: 0,
16361638
maxLength: item.$.length ? item.$.length : null,
1639+
defaultValue: item.$.default ? item.$.default : null,
16371640
isWritable: item.$.writable == 'true',
16381641
isArray: item.$.array == 'true' ? true : false,
16391642
isEnum: item.$.enum == 'true' ? true : false,

test/gen-matter-1.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,21 @@ test(
293293
expect(simpleTest).toContain(
294294
'zcl command arguments do not exist for AddSceneResponse command.'
295295
)
296+
297+
// Testing default values for command arguments, event fields and struct items
298+
expect(sdkExt).toContain('ProductID - int16u - default_value=0x01')
299+
expect(sdkExt).toContain(
300+
'RequestorCanConsent - boolean - default_value=false'
301+
)
302+
expect(sdkExt).toContain(
303+
'Struct name: ChannelInfoStruct, Struct Item Name: MajorNumber, Struct Item Type: int16u, Struct Default Value: 0xFFFF'
304+
)
305+
expect(sdkExt).not.toContain('SoftwareVersion - int32u - default_value=')
306+
let eventOut = genResult.content['events.out']
307+
expect(eventOut).toContain(
308+
'> Field: SoftwareVersion default_value=0x00000000'
309+
)
310+
expect(eventOut).not.toContain('> Field: ProductID default_value=')
296311
},
297312
testUtil.timeout.long()
298313
)

0 commit comments

Comments
 (0)