From e48c96536d85f4ba09d8c618994367203ec4864b Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Fri, 13 Oct 2023 11:28:50 -0400 Subject: [PATCH 1/3] Add a test attribute in api_maturity and make sure unit tests pass Fix up invalid comment Prepare unit test for provisional attribute for commands Update order for maturity Update xsd to allow API maturity for attributes Start supporting apiMaturity inside schemas,loaders and impexp make unit test pass alignment update Move provisional inline, so that provisional and non-provisional are clearly different Allow non-standard schema crawler home in script and update doc fix merge conflict --- docs/make-schema-diagram | 6 +- docs/zap-schema.svg | 4662 +++++++++-------- src-electron/db/db-mapping.js | 3 + src-electron/db/query-attribute.js | 18 +- src-electron/db/query-endpoint.js | 2 + src-electron/db/query-impexp.js | 7 +- src-electron/db/query-loader.js | 7 +- src-electron/db/query-zcl.js | 19 +- src-electron/db/zap-schema.sql | 1 + src-electron/zcl/zcl-loader-silabs.js | 1 + test/gen-matter-api-maturity.test.js | 6 + test/gen-meta.test.js | 40 +- .../matter-api-maturity/codegen_test.zapt | 60 +- test/resource/meta/api_maturity.xml | 5 + zcl-builtin/shared/schema/zcl.xsd | 1 + 15 files changed, 2529 insertions(+), 2309 deletions(-) diff --git a/docs/make-schema-diagram b/docs/make-schema-diagram index 55382005a0..8f6a0fa487 100755 --- a/docs/make-schema-diagram +++ b/docs/make-schema-diagram @@ -10,7 +10,11 @@ # It also has only ever been tested on Linux. # -SC_HOME=~/schemacrawler/latest +# You can set env variables such as: +# SC_HOME=/opt/schemacrawler +if [ -z "$SC_HOME" ]; then + SC_HOME=~/schemacrawler/latest +fi SC_BIN=${SC_HOME}/_schemacrawler/bin/schemacrawler.sh SQLITE=~/.zap/self-check.sqlite diff --git a/docs/zap-schema.svg b/docs/zap-schema.svg index bd3addfc21..955355f696 100644 --- a/docs/zap-schema.svg +++ b/docs/zap-schema.svg @@ -1,2793 +1,2899 @@ - - - + + SchemaCrawler_Diagram - -generated by -SchemaCrawler 16.16.18 -ZAP schema, Copyright (c) 2020 Silicon Labs, released under Apache 2.0 license. - + +generated by +SchemaCrawler 16.19.11 +ZAP schema, Copyright (c) 2020 Silicon Labs, released under Apache 2.0 license. + access_72bb1dc3 - - -ACCESS - -[table] -ACCESS_ID - -INTEGER - -auto-incremented -OPERATION_REF - -INTEGER -ROLE_REF - -INTEGER -ACCESS_MODIFIER_REF - -INTEGER - + + +ACCESS + +[table] +ACCESS_ID + +INTEGER + +auto-incremented +OPERATION_REF + +INTEGER +ROLE_REF + +INTEGER +ACCESS_MODIFIER_REF + +INTEGER + access_modifier_f63f3fb1 - - -ACCESS_MODIFIER - -[table] -ACCESS_MODIFIER_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - + + +ACCESS_MODIFIER + +[table] +ACCESS_MODIFIER_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT + access_72bb1dc3:w->access_modifier_f63f3fb1:e - - - - - - - + + + + + + + +SCHCRWLR_F63ECB52_72BAA964 operation_93359a6 - - -OPERATION - -[table] -OPERATION_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - + + +OPERATION + +[table] +OPERATION_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT + access_72bb1dc3:w->operation_93359a6:e - - - - - - - + + + + + + + +SCHCRWLR_0932E547_72BAA964 - + role_26ecd5 - - -ROLE - -[table] -ROLE_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -LEVEL - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - + + +ROLE + +[table] +ROLE_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +LEVEL + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT + access_72bb1dc3:w->role_26ecd5:e - - - - - - - + + + + + + + +SCHCRWLR_00267876_72BAA964 attribute_access_b017dce6 - - -ATTRIBUTE_ACCESS - -[table] -ATTRIBUTE_REF - -INTEGER -ACCESS_REF - -INTEGER - + + +ATTRIBUTE_ACCESS + +[table] +ATTRIBUTE_REF + +INTEGER +ACCESS_REF + +INTEGER + attribute_access_b017dce6:w->access_72bb1dc3:e - - - - - - - + + + + + + + +SCHCRWLR_72BAA964_B0176887 attribute_a6e02edb - - -ATTRIBUTE - -[table] -ATTRIBUTE_ID - -INTEGER - -auto-incremented -CLUSTER_REF - -INTEGER -PACKAGE_REF - -INTEGER -CODE - -INTEGER -MANUFACTURER_CODE - -INTEGER -NAME - -TEXT -TYPE - -TEXT -SIDE - -TEXT -DEFINE - -TEXT -MIN - -TEXT -MAX - -TEXT -MIN_LENGTH - -INTEGER -MAX_LENGTH - -INTEGER -REPORT_MIN_INTERVAL - -INTEGER -REPORT_MAX_INTERVAL - -INTEGER -REPORTABLE_CHANGE - -TEXT -REPORTABLE_CHANGE_LENGTH - -INTEGER -IS_WRITABLE - -INTEGER -DEFAULT_VALUE - -TEXT -IS_SCENE_REQUIRED - -INTEGER -IS_OPTIONAL - -INTEGER -REPORTING_POLICY - -TEXT -STORAGE_POLICY - -TEXT -IS_NULLABLE - -INTEGER -ARRAY_TYPE - -TEXT -MUST_USE_TIMED_WRITE - -INTEGER -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER - + + +ATTRIBUTE + +[table] +ATTRIBUTE_ID + +INTEGER + +auto-incremented +CLUSTER_REF + +INTEGER +PACKAGE_REF + +INTEGER +CODE + +INTEGER +MANUFACTURER_CODE + +INTEGER +NAME + +TEXT +TYPE + +TEXT +SIDE + +TEXT +DEFINE + +TEXT +MIN + +TEXT +MAX + +TEXT +MIN_LENGTH + +INTEGER +MAX_LENGTH + +INTEGER +REPORT_MIN_INTERVAL + +INTEGER +REPORT_MAX_INTERVAL + +INTEGER +REPORTABLE_CHANGE + +TEXT +REPORTABLE_CHANGE_LENGTH + +INTEGER +IS_WRITABLE + +INTEGER +DEFAULT_VALUE + +TEXT +IS_SCENE_REQUIRED + +INTEGER +IS_OPTIONAL + +INTEGER +REPORTING_POLICY + +TEXT +STORAGE_POLICY + +TEXT +IS_NULLABLE + +INTEGER +ARRAY_TYPE + +TEXT +MUST_USE_TIMED_WRITE + +INTEGER +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER +API_MATURITY + +TEXT + attribute_access_b017dce6:w->attribute_a6e02edb:e - - - - - - - + + + + + + + +SCHCRWLR_A6DFBA7C_B0176887 cluster_access_38ea13c8 - - -CLUSTER_ACCESS - -[table] -CLUSTER_REF - -INTEGER -ACCESS_REF - -INTEGER - + + +CLUSTER_ACCESS + +[table] +CLUSTER_REF + +INTEGER +ACCESS_REF + +INTEGER + cluster_access_38ea13c8:w->access_72bb1dc3:e - - - - - - - + + + + + + + +SCHCRWLR_72BAA964_38E99F69 cluster_5ec71239 - - -CLUSTER - -[table] -CLUSTER_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -DOMAIN_NAME - -TEXT -CODE - -INTEGER -MANUFACTURER_CODE - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -DEFINE - -TEXT -IS_SINGLETON - -INTEGER -REVISION - -INTEGER -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER - + + +CLUSTER + +[table] +CLUSTER_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +DOMAIN_NAME + +TEXT +CODE + +INTEGER +MANUFACTURER_CODE + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +DEFINE + +TEXT +IS_SINGLETON + +INTEGER +REVISION + +INTEGER +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER +API_MATURITY + +TEXT + - + cluster_access_38ea13c8:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_38E99F69 command_access_b02dd957 - - -COMMAND_ACCESS - -[table] -COMMAND_REF - -INTEGER -ACCESS_REF - -INTEGER - + + +COMMAND_ACCESS + +[table] +COMMAND_REF + +INTEGER +ACCESS_REF + +INTEGER + command_access_b02dd957:w->access_72bb1dc3:e - - - - - - - + + + + + + + +SCHCRWLR_72BAA964_B02D64F8 - + command_6371df8a - - -COMMAND - -[table] -COMMAND_ID - -INTEGER - -auto-incremented -CLUSTER_REF - -INTEGER -PACKAGE_REF - -INTEGER -CODE - -INTEGER -MANUFACTURER_CODE - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -SOURCE - -TEXT -IS_OPTIONAL - -INTEGER -MUST_USE_TIMED_INVOKE - -INTEGER -IS_FABRIC_SCOPED - -INTEGER -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER -RESPONSE_NAME - -INTEGER -RESPONSE_REF - -INTEGER -IS_DEFAULT_RESPONSE_ENABLED - -INTEGER - + + +COMMAND + +[table] +COMMAND_ID + +INTEGER + +auto-incremented +CLUSTER_REF + +INTEGER +PACKAGE_REF + +INTEGER +CODE + +INTEGER +MANUFACTURER_CODE + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +SOURCE + +TEXT +IS_OPTIONAL + +INTEGER +MUST_USE_TIMED_INVOKE + +INTEGER +IS_FABRIC_SCOPED + +INTEGER +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER +RESPONSE_NAME + +INTEGER +RESPONSE_REF + +INTEGER +IS_DEFAULT_RESPONSE_ENABLED + +INTEGER + command_access_b02dd957:w->command_6371df8a:e - - - - - - - + + + + + + + +SCHCRWLR_63716B2B_B02D64F8 default_access_7ba041a1 - - -DEFAULT_ACCESS - -[table] -PACKAGE_REF - -INTEGER -ENTITY_TYPE - -TEXT -ACCESS_REF - -INTEGER - + + +DEFAULT_ACCESS + +[table] +PACKAGE_REF + +INTEGER +ENTITY_TYPE + +TEXT +ACCESS_REF + +INTEGER + default_access_7ba041a1:w->access_72bb1dc3:e - - - - - - - + + + + + + + +SCHCRWLR_72BAA964_7B9FCD42 package_fab13485 - - -PACKAGE - -[table] -PACKAGE_ID - -INTEGER - -auto-incremented -PARENT_PACKAGE_REF - -INTEGER -PATH - -TEXT NOT NULL -TYPE - -TEXT -CRC - -INTEGER -VERSION - -INTEGER -CATEGORY - -TEXT -DESCRIPTION - -TEXT - + + +PACKAGE + +[table] +PACKAGE_ID + +INTEGER + +auto-incremented +PARENT_PACKAGE_REF + +INTEGER +PATH + +TEXT NOT NULL +TYPE + +TEXT +CRC + +INTEGER +VERSION + +INTEGER +CATEGORY + +TEXT +DESCRIPTION + +TEXT + - + default_access_7ba041a1:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_7B9FCD42 event_access_4668c328 - - -EVENT_ACCESS - -[table] -EVENT_REF - -INTEGER -ACCESS_REF - -INTEGER - + + +EVENT_ACCESS + +[table] +EVENT_REF + +INTEGER +ACCESS_REF + +INTEGER + event_access_4668c328:w->access_72bb1dc3:e - - - - - - - + + + + + + + +SCHCRWLR_72BAA964_46684EC9 event_3f4eed9 - - -EVENT - -[table] -EVENT_ID - -INTEGER - -auto-incremented -CLUSTER_REF - -INTEGER -PACKAGE_REF - -INTEGER -CODE - -INTEGER -MANUFACTURER_CODE - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -SIDE - -TEXT -IS_OPTIONAL - -INTEGER -IS_FABRIC_SENSITIVE - -INTEGER -PRIORITY - -TEXT -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER - + + +EVENT + +[table] +EVENT_ID + +INTEGER + +auto-incremented +CLUSTER_REF + +INTEGER +PACKAGE_REF + +INTEGER +CODE + +INTEGER +MANUFACTURER_CODE + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +SIDE + +TEXT +IS_OPTIONAL + +INTEGER +IS_FABRIC_SENSITIVE + +INTEGER +PRIORITY + +TEXT +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER + - + event_access_4668c328:w->event_3f4eed9:e - - - - - - - + + + + + + + +SCHCRWLR_03F47A7A_46684EC9 access_modifier_f63f3fb1:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_F63ECB52 atomic_73b03e8a - - -"ATOMIC" - -[table] -ATOMIC_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -ATOMIC_IDENTIFIER - -INTEGER -ATOMIC_SIZE - -INTEGER -IS_DISCRETE - -INTEGER -IS_STRING - -INTEGER -IS_LONG - -INTEGER -IS_CHAR - -INTEGER -IS_SIGNED - -INTEGER - + + +"ATOMIC" + +[table] +ATOMIC_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +ATOMIC_IDENTIFIER + +INTEGER +ATOMIC_SIZE + +INTEGER +IS_DISCRETE + +INTEGER +IS_STRING + +INTEGER +IS_LONG + +INTEGER +IS_CHAR + +INTEGER +IS_SIGNED + +INTEGER + atomic_73b03e8a:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_CE3170F5 - + attribute_a6e02edb:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_A6DFBA7C - + attribute_a6e02edb:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_A6DFBA7C - + spec_27641a - - -SPEC - -[table] -SPEC_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -CODE - -TEXT NOT NULL -DESCRIPTION - -TEXT -CERTIFIABLE - -INTEGER - + + +SPEC + +[table] +SPEC_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +CODE + +TEXT NOT NULL +DESCRIPTION + +TEXT +CERTIFIABLE + +INTEGER + - + attribute_a6e02edb:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_A6DFBA7C - + attribute_a6e02edb:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_A6DFBA7C device_type_attribute_ce5151f - - -DEVICE_TYPE_ATTRIBUTE - -[table] -DEVICE_TYPE_CLUSTER_REF - -INTEGER -ATTRIBUTE_REF - -INTEGER -ATTRIBUTE_NAME - -TEXT - + + +DEVICE_TYPE_ATTRIBUTE + +[table] +DEVICE_TYPE_CLUSTER_REF + +INTEGER +ATTRIBUTE_REF + +INTEGER +ATTRIBUTE_NAME + +TEXT + device_type_attribute_ce5151f:w->attribute_a6e02edb:e - - - - - - - + + + + + + + +SCHCRWLR_A6DFBA7C_0CE4A0C0 - + device_type_cluster_7298b97d - - -DEVICE_TYPE_CLUSTER - -[table] -DEVICE_TYPE_CLUSTER_ID - -INTEGER - -auto-incremented -DEVICE_TYPE_REF - -INTEGER -CLUSTER_REF - -INTEGER -CLUSTER_NAME - -TEXT -INCLUDE_CLIENT - -INTEGER -INCLUDE_SERVER - -INTEGER -LOCK_CLIENT - -INTEGER -LOCK_SERVER - -INTEGER - + + +DEVICE_TYPE_CLUSTER + +[table] +DEVICE_TYPE_CLUSTER_ID + +INTEGER + +auto-incremented +DEVICE_TYPE_REF + +INTEGER +CLUSTER_REF + +INTEGER +CLUSTER_NAME + +TEXT +INCLUDE_CLIENT + +INTEGER +INCLUDE_SERVER + +INTEGER +LOCK_CLIENT + +INTEGER +LOCK_SERVER + +INTEGER + device_type_attribute_ce5151f:w->device_type_cluster_7298b97d:e - - - - - - - - - - -global_attribute_default_73c65a21 - - -GLOBAL_ATTRIBUTE_DEFAULT - -[table] -GLOBAL_ATTRIBUTE_DEFAULT_ID - -INTEGER - -auto-incremented -CLUSTER_REF - -INTEGER NOT NULL -ATTRIBUTE_REF - -INTEGER NOT NULL -DEFAULT_VALUE - -TEXT - - - - -global_attribute_default_73c65a21:w->attribute_a6e02edb:e - - - - - - - - - - -global_attribute_default_73c65a21:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_7298451E_0CE4A0C0 - + endpoint_type_attribute_c265400 - - -ENDPOINT_TYPE_ATTRIBUTE - -[table] -ENDPOINT_TYPE_ATTRIBUTE_ID - -INTEGER - -auto-incremented -ENDPOINT_TYPE_REF - -INTEGER -ENDPOINT_TYPE_CLUSTER_REF - -INTEGER -ATTRIBUTE_REF - -INTEGER -INCLUDED - -INTEGER -STORAGE_OPTION - -TEXT -SINGLETON - -INTEGER -BOUNDED - -INTEGER -DEFAULT_VALUE - -TEXT -INCLUDED_REPORTABLE - -INTEGER -MIN_INTERVAL - -INTEGER -MAX_INTERVAL - -INTEGER -REPORTABLE_CHANGE - -INTEGER - + + +ENDPOINT_TYPE_ATTRIBUTE + +[table] +ENDPOINT_TYPE_ATTRIBUTE_ID + +INTEGER + +auto-incremented +ENDPOINT_TYPE_REF + +INTEGER +ENDPOINT_TYPE_CLUSTER_REF + +INTEGER +ATTRIBUTE_REF + +INTEGER +INCLUDED + +INTEGER +STORAGE_OPTION + +TEXT +SINGLETON + +INTEGER +BOUNDED + +INTEGER +DEFAULT_VALUE + +TEXT +INCLUDED_REPORTABLE + +INTEGER +MIN_INTERVAL + +INTEGER +MAX_INTERVAL + +INTEGER +REPORTABLE_CHANGE + +INTEGER + - + endpoint_type_attribute_c265400:w->attribute_a6e02edb:e - - - - - - - + + + + + + + +SCHCRWLR_A6DFBA7C_0C25DFA1 - + endpoint_type_cluster_c12e3c9e - - -ENDPOINT_TYPE_CLUSTER - -[table] -ENDPOINT_TYPE_CLUSTER_ID - -INTEGER - -auto-incremented -ENDPOINT_TYPE_REF - -INTEGER -CLUSTER_REF - -INTEGER -SIDE - -TEXT -ENABLED - -INTEGER - + + +ENDPOINT_TYPE_CLUSTER + +[table] +ENDPOINT_TYPE_CLUSTER_ID + +INTEGER + +auto-incremented +ENDPOINT_TYPE_REF + +INTEGER +CLUSTER_REF + +INTEGER +SIDE + +TEXT +ENABLED + +INTEGER + endpoint_type_attribute_c265400:w->endpoint_type_cluster_c12e3c9e:e - - - - - - - + + + + + + + +SCHCRWLR_C12DC83F_0C25DFA1 endpoint_type_9857dc03 - - -ENDPOINT_TYPE - -[table] -ENDPOINT_TYPE_ID - -INTEGER - -auto-incremented -SESSION_REF - -INTEGER -NAME - -TEXT - + + +ENDPOINT_TYPE + +[table] +ENDPOINT_TYPE_ID + +INTEGER + +auto-incremented +SESSION_REF + +INTEGER +NAME + +TEXT + - + endpoint_type_attribute_c265400:w->endpoint_type_9857dc03:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_0C25DFA1 + + + +global_attribute_default_73c65a21 + + +GLOBAL_ATTRIBUTE_DEFAULT + +[table] +GLOBAL_ATTRIBUTE_DEFAULT_ID + +INTEGER + +auto-incremented +CLUSTER_REF + +INTEGER NOT NULL +ATTRIBUTE_REF + +INTEGER NOT NULL +DEFAULT_VALUE + +TEXT + + + + +global_attribute_default_73c65a21:w->attribute_a6e02edb:e + + + + + + + +SCHCRWLR_A6DFBA7C_73C5E5C2 + + + +global_attribute_default_73c65a21:w->cluster_5ec71239:e + + + + + + + +SCHCRWLR_5EC69DDA_73C5E5C2 bitmap_74cc598e - - -BITMAP - -[table] -BITMAP_ID - -INTEGER NOT NULL -SIZE - -INTEGER - + + +BITMAP + +[table] +BITMAP_ID + +INTEGER NOT NULL +SIZE + +INTEGER + data_type_9233070e - - -DATA_TYPE - -[table] -DATA_TYPE_ID - -INTEGER NOT NULL - -auto-incremented -NAME - -TEXT -DESCRIPTION - -TEXT -DISCRIMINATOR_REF - -INTEGER -PACKAGE_REF - -INTEGER - + + +DATA_TYPE + +[table] +DATA_TYPE_ID + +INTEGER NOT NULL + +auto-incremented +NAME + +TEXT +DESCRIPTION + +TEXT +DISCRIMINATOR_REF + +INTEGER +PACKAGE_REF + +INTEGER + bitmap_74cc598e:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_74CBE52F bitmap_field_bfea8629 - - -BITMAP_FIELD - -[table] -BITMAP_FIELD_ID - -INTEGER NOT NULL - -auto-incremented -BITMAP_REF - -INTEGER -FIELD_IDENTIFIER - -INTEGER -NAME - -TEXT(100) -MASK - -INTEGER -TYPE - -TEXT(100) - + + +BITMAP_FIELD + +[table] +BITMAP_FIELD_ID + +INTEGER NOT NULL + +auto-incremented +BITMAP_REF + +INTEGER +FIELD_IDENTIFIER + +INTEGER +NAME + +TEXT(100) +MASK + +INTEGER +TYPE + +TEXT(100) + bitmap_field_bfea8629:w->bitmap_74cc598e:e - - - - - - - + + + + + + + +SCHCRWLR_74CBE52F_BFEA11CA - + cluster_5ec71239:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_5EC69DDA - + cluster_5ec71239:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_5EC69DDA - + cluster_5ec71239:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_5EC69DDA + + + +command_6371df8a:w->cluster_5ec71239:e + + + + + + + +SCHCRWLR_5EC69DDA_63716B2B + + + +command_6371df8a:w->command_6371df8a:e + + + + + + + +SCHCRWLR_63716B2B_63716B2B + + + +command_6371df8a:w->package_fab13485:e + + + + + + + +SCHCRWLR_FAB0C026_63716B2B + + + +command_6371df8a:w->spec_27641a:e + + + + + + + +SCHCRWLR_0026EFBB_63716B2B + + + +command_6371df8a:w->spec_27641a:e + + + + + + + +SCHCRWLR_0026EFBB_63716B2B - + data_type_cluster_8d9f2ca9 - - -DATA_TYPE_CLUSTER - -[table] -DATA_TYPE_CLUSTER_ID - -INTEGER NOT NULL - -auto-incremented -CLUSTER_REF - -INTEGER -CLUSTER_CODE - -INTEGER -DATA_TYPE_REF - -INTEGER - + + +DATA_TYPE_CLUSTER + +[table] +DATA_TYPE_CLUSTER_ID + +INTEGER NOT NULL + +auto-incremented +CLUSTER_REF + +INTEGER +CLUSTER_CODE + +INTEGER +DATA_TYPE_REF + +INTEGER + - + data_type_cluster_8d9f2ca9:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_8D9EB84A - + data_type_cluster_8d9f2ca9:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_8D9EB84A - + device_type_cluster_7298b97d:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_7298451E device_type_2620a7e2 - - -DEVICE_TYPE - -[table] -DEVICE_TYPE_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -DOMAIN - -TEXT -CODE - -INTEGER -PROFILE_ID - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -CLASS - -TEXT -"SCOPE" - -TEXT -SUPERSET - -TEXT - + + +DEVICE_TYPE + +[table] +DEVICE_TYPE_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +DOMAIN + +TEXT +CODE + +INTEGER +PROFILE_ID + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +CLASS + +TEXT +"SCOPE" + +TEXT +SUPERSET + +TEXT + device_type_cluster_7298b97d:w->device_type_2620a7e2:e - - - - - - - + + + + + + + +SCHCRWLR_26203383_7298451E - + endpoint_type_cluster_c12e3c9e:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_C12DC83F - + endpoint_type_cluster_c12e3c9e:w->endpoint_type_9857dc03:e - - - - - - - - - - -tag_1b7d9 - - -TAG - -[table] -TAG_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -CLUSTER_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - - - - -tag_1b7d9:w->cluster_5ec71239:e - - - - - - - - - - -tag_1b7d9:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_C12DC83F - + event_3f4eed9:w->cluster_5ec71239:e - - - - - - - + + + + + + + +SCHCRWLR_5EC69DDA_03F47A7A - + event_3f4eed9:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_03F47A7A event_3f4eed9:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_03F47A7A event_3f4eed9:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_03F47A7A - - -command_6371df8a:w->cluster_5ec71239:e - - - - - - - + + +tag_1b7d9 + + +TAG + +[table] +TAG_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +CLUSTER_REF + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT + - - -command_6371df8a:w->command_6371df8a:e - - - - - - - + + +tag_1b7d9:w->cluster_5ec71239:e + + + + + + + +SCHCRWLR_5EC69DDA_0001437A - + -command_6371df8a:w->package_fab13485:e - - - - - - - - - - -command_6371df8a:w->spec_27641a:e - - - - - - - - - - -command_6371df8a:w->spec_27641a:e - - - - - - - - - - -device_type_command_774386ce - - -DEVICE_TYPE_COMMAND - -[table] -DEVICE_TYPE_CLUSTER_REF - -INTEGER -COMMAND_REF - -INTEGER -COMMAND_NAME - -TEXT - - - - -device_type_command_774386ce:w->device_type_cluster_7298b97d:e - - - - - - - - - - -device_type_command_774386ce:w->command_6371df8a:e - - - - - - - +tag_1b7d9:w->package_fab13485:e + + + + + + + +SCHCRWLR_FAB0C026_0001437A - + command_arg_294e7f81 - - -COMMAND_ARG - -[table] -COMMAND_REF - -INTEGER -FIELD_IDENTIFIER - -INTEGER -NAME - -TEXT -TYPE - -TEXT -MIN - -TEXT -MAX - -TEXT -MIN_LENGTH - -INTEGER -MAX_LENGTH - -INTEGER -IS_ARRAY - -INTEGER -PRESENT_IF - -TEXT -IS_NULLABLE - -INTEGER -IS_OPTIONAL - -INTEGER -COUNT_ARG - -TEXT -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER - + + +COMMAND_ARG + +[table] +COMMAND_REF + +INTEGER +FIELD_IDENTIFIER + +INTEGER +NAME + +TEXT +TYPE + +TEXT +MIN + +TEXT +MAX + +TEXT +MIN_LENGTH + +INTEGER +MAX_LENGTH + +INTEGER +IS_ARRAY + +INTEGER +PRESENT_IF + +TEXT +IS_NULLABLE + +INTEGER +IS_OPTIONAL + +INTEGER +COUNT_ARG + +TEXT +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER + - + command_arg_294e7f81:w->command_6371df8a:e - - - - - - - + + + + + + + +SCHCRWLR_63716B2B_294E0B22 - + command_arg_294e7f81:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_294E0B22 - + command_arg_294e7f81:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_294E0B22 + + + +device_type_command_774386ce + + +DEVICE_TYPE_COMMAND + +[table] +DEVICE_TYPE_CLUSTER_REF + +INTEGER +COMMAND_REF + +INTEGER +COMMAND_NAME + +TEXT + + + + +device_type_command_774386ce:w->command_6371df8a:e + + + + + + + +SCHCRWLR_63716B2B_7743126F + + + +device_type_command_774386ce:w->device_type_cluster_7298b97d:e + + + + + + + +SCHCRWLR_7298451E_7743126F endpoint_type_command_c5d909ef - - -ENDPOINT_TYPE_COMMAND - -[table] -ENDPOINT_TYPE_COMMAND_ID - -INTEGER - -auto-incremented -ENDPOINT_TYPE_REF - -INTEGER -ENDPOINT_TYPE_CLUSTER_REF - -INTEGER -COMMAND_REF - -INTEGER -INCOMING - -INTEGER -OUTGOING - -INTEGER - - - - -endpoint_type_command_c5d909ef:w->endpoint_type_cluster_c12e3c9e:e - - - - - - - + + +ENDPOINT_TYPE_COMMAND + +[table] +ENDPOINT_TYPE_COMMAND_ID + +INTEGER + +auto-incremented +ENDPOINT_TYPE_REF + +INTEGER +ENDPOINT_TYPE_CLUSTER_REF + +INTEGER +COMMAND_REF + +INTEGER +IS_INCOMING + +INTEGER +IS_ENABLED + +INTEGER + endpoint_type_command_c5d909ef:w->command_6371df8a:e - - - - - - - + + + + + + + +SCHCRWLR_63716B2B_C5D89590 + + + +endpoint_type_command_c5d909ef:w->endpoint_type_cluster_c12e3c9e:e + + + + + + + +SCHCRWLR_C12DC83F_C5D89590 - + endpoint_type_command_c5d909ef:w->endpoint_type_9857dc03:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_C5D89590 discriminator_4931d2db - - -DISCRIMINATOR - -[table] -DISCRIMINATOR_ID - -INTEGER NOT NULL - -auto-incremented -NAME - -TEXT -PACKAGE_REF - -INTEGER - + + +DISCRIMINATOR + +[table] +DISCRIMINATOR_ID + +INTEGER NOT NULL + +auto-incremented +NAME + +TEXT +PACKAGE_REF + +INTEGER + data_type_9233070e:w->discriminator_4931d2db:e - - - - - - - + + + + + + + +SCHCRWLR_49315E7C_923292AF - + data_type_9233070e:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_923292AF enum_210160 - - -ENUM - -[table] -ENUM_ID - -INTEGER NOT NULL -SIZE - -INTEGER - + + +ENUM + +[table] +ENUM_ID + +INTEGER NOT NULL +SIZE + +INTEGER + - + enum_210160:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_00208D01 number_89ec43a8 - - -NUMBER - -[table] -NUMBER_ID - -INTEGER NOT NULL -SIZE - -INTEGER -IS_SIGNED - -INTEGER - + + +NUMBER + +[table] +NUMBER_ID + +INTEGER NOT NULL +SIZE + +INTEGER +IS_SIGNED + +INTEGER + - + number_89ec43a8:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_89EBCF49 string_9268c870 - - -STRING - -[table] -STRING_ID - -INTEGER NOT NULL -IS_LONG - -INTEGER -SIZE - -INTEGER -IS_CHAR - -INTEGER - + + +STRING + +[table] +STRING_ID + +INTEGER NOT NULL +IS_LONG + +INTEGER +SIZE + +INTEGER +IS_CHAR + +INTEGER + - + string_9268c870:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_92685411 struct_9268f434 - - -STRUCT - -[table] -STRUCT_ID - -INTEGER NOT NULL -IS_FABRIC_SCOPED - -INTEGER -SIZE - -INTEGER - + + +STRUCT + +[table] +STRUCT_ID + +INTEGER NOT NULL +IS_FABRIC_SCOPED + +INTEGER +SIZE + +INTEGER + - + struct_9268f434:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_92687FD5 struct_item_d6e4bd9c - - -STRUCT_ITEM - -[table] -STRUCT_ITEM_ID - -INTEGER NOT NULL - -auto-incremented -STRUCT_REF - -INTEGER -FIELD_IDENTIFIER - -INTEGER -NAME - -TEXT(100) -IS_ARRAY - -INTEGER -IS_ENUM - -INTEGER -MIN_LENGTH - -INTEGER -MAX_LENGTH - -INTEGER -IS_WRITABLE - -INTEGER -IS_NULLABLE - -INTEGER -IS_OPTIONAL - -INTEGER -IS_FABRIC_SENSITIVE - -INTEGER -SIZE - -INTEGER -DATA_TYPE_REF - -INTEGER NOT NULL - + + +STRUCT_ITEM + +[table] +STRUCT_ITEM_ID + +INTEGER NOT NULL + +auto-incremented +STRUCT_REF + +INTEGER +FIELD_IDENTIFIER + +INTEGER +NAME + +TEXT(100) +IS_ARRAY + +INTEGER +IS_ENUM + +INTEGER +MIN_LENGTH + +INTEGER +MAX_LENGTH + +INTEGER +IS_WRITABLE + +INTEGER +IS_NULLABLE + +INTEGER +IS_OPTIONAL + +INTEGER +IS_FABRIC_SENSITIVE + +INTEGER +SIZE + +INTEGER +DATA_TYPE_REF + +INTEGER NOT NULL + struct_item_d6e4bd9c:w->data_type_9233070e:e - - - - - - - + + + + + + + +SCHCRWLR_923292AF_D6E4493D struct_item_d6e4bd9c:w->struct_9268f434:e - - - - - - - + + + + + + + +SCHCRWLR_92687FD5_D6E4493D - + device_type_2620a7e2:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_26203383 endpoint_type_device_e685fbb0 - - -ENDPOINT_TYPE_DEVICE - -[table] -ENDPOINT_TYPE_DEVICE_ID - -INTEGER - -auto-incremented -DEVICE_TYPE_REF - -INTEGER -ENDPOINT_TYPE_REF - -INTEGER -DEVICE_TYPE_ORDER - -INTEGER -DEVICE_IDENTIFIER - -INTEGER -DEVICE_VERSION - -INTEGER - + + +ENDPOINT_TYPE_DEVICE + +[table] +ENDPOINT_TYPE_DEVICE_ID + +INTEGER + +auto-incremented +DEVICE_TYPE_REF + +INTEGER +ENDPOINT_TYPE_REF + +INTEGER +DEVICE_TYPE_ORDER + +INTEGER +DEVICE_IDENTIFIER + +INTEGER +DEVICE_VERSION + +INTEGER + endpoint_type_device_e685fbb0:w->device_type_2620a7e2:e - - - - - - - + + + + + + + +SCHCRWLR_26203383_E6858751 - + endpoint_type_device_e685fbb0:w->endpoint_type_9857dc03:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_E6858751 - + discriminator_4931d2db:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_49315E7C domain_78873d23 - - -DOMAIN - -[table] -DOMAIN_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -NAME - -TEXT -LATEST_SPEC_REF - -INTEGER - + + +DOMAIN + +[table] +DOMAIN_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +NAME + +TEXT +LATEST_SPEC_REF + +INTEGER + - + domain_78873d23:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_7886C8C4 domain_78873d23:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_7886C8C4 endpoint_966d81f4 - - -ENDPOINT - -[table] -ENDPOINT_ID - -INTEGER - -auto-incremented -SESSION_REF - -INTEGER -ENDPOINT_TYPE_REF - -INTEGER -PROFILE - -INTEGER -ENDPOINT_IDENTIFIER - -INTEGER -NETWORK_IDENTIFIER - -INTEGER - + + +ENDPOINT + +[table] +ENDPOINT_ID + +INTEGER + +auto-incremented +SESSION_REF + +INTEGER +ENDPOINT_TYPE_REF + +INTEGER +PROFILE + +INTEGER +ENDPOINT_IDENTIFIER + +INTEGER +NETWORK_IDENTIFIER + +INTEGER + endpoint_966d81f4:w->endpoint_type_9857dc03:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_966D0D95 session_a11c82d5 - - -SESSION - -[table] -SESSION_ID - -INTEGER - -auto-incremented -USER_REF - -INTEGER -SESSION_KEY - -TEXT -CREATION_TIME - -INTEGER -DIRTY - -INTEGER - + + +SESSION + +[table] +SESSION_ID + +INTEGER + +auto-incremented +USER_REF + +INTEGER +SESSION_KEY + +TEXT +CREATION_TIME + +INTEGER +DIRTY + +INTEGER + - + endpoint_966d81f4:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_966D0D95 - + endpoint_type_9857dc03:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_985767A4 endpoint_type_event_e67d6e7e - - -ENDPOINT_TYPE_EVENT - -[table] -ENDPOINT_TYPE_EVENT_ID - -INTEGER - -auto-incremented -ENDPOINT_TYPE_REF - -INTEGER -ENDPOINT_TYPE_CLUSTER_REF - -INTEGER -EVENT_REF - -INTEGER -INCLUDED - -INTEGER - + + +ENDPOINT_TYPE_EVENT + +[table] +ENDPOINT_TYPE_EVENT_ID + +INTEGER + +auto-incremented +ENDPOINT_TYPE_REF + +INTEGER +ENDPOINT_TYPE_CLUSTER_REF + +INTEGER +EVENT_REF + +INTEGER +INCLUDED + +INTEGER + endpoint_type_event_e67d6e7e:w->endpoint_type_cluster_c12e3c9e:e - - - - - - - + + + + + + + +SCHCRWLR_C12DC83F_E67CFA1F - + endpoint_type_event_e67d6e7e:w->event_3f4eed9:e - - - - - - - + + + + + + + +SCHCRWLR_03F47A7A_E67CFA1F endpoint_type_event_e67d6e7e:w->endpoint_type_9857dc03:e - - - - - - - + + + + + + + +SCHCRWLR_985767A4_E67CFA1F enum_item_b6420bf0 - - -ENUM_ITEM - -[table] -ENUM_ITEM_ID - -INTEGER NOT NULL - -auto-incremented -ENUM_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT -FIELD_IDENTIFIER - -INTEGER -"VALUE" - -INTEGER - + + +ENUM_ITEM + +[table] +ENUM_ITEM_ID + +INTEGER NOT NULL + +auto-incremented +ENUM_REF + +INTEGER +NAME + +TEXT +DESCRIPTION + +TEXT +FIELD_IDENTIFIER + +INTEGER +"VALUE" + +INTEGER + enum_item_b6420bf0:w->enum_210160:e - - - - - - - + + + + + + + +SCHCRWLR_00208D01_B6419791 event_field_d102b734 - - -EVENT_FIELD - -[table] -EVENT_REF - -INTEGER -FIELD_IDENTIFIER - -INTEGER -NAME - -TEXT -TYPE - -TEXT -IS_ARRAY - -INTEGER -IS_NULLABLE - -INTEGER -IS_OPTIONAL - -INTEGER -INTRODUCED_IN_REF - -INTEGER -REMOVED_IN_REF - -INTEGER - + + +EVENT_FIELD + +[table] +EVENT_REF + +INTEGER +FIELD_IDENTIFIER + +INTEGER +NAME + +TEXT +TYPE + +TEXT +IS_ARRAY + +INTEGER +IS_NULLABLE + +INTEGER +IS_OPTIONAL + +INTEGER +INTRODUCED_IN_REF + +INTEGER +REMOVED_IN_REF + +INTEGER + event_field_d102b734:w->event_3f4eed9:e - - - - - - - + + + + + + + +SCHCRWLR_03F47A7A_D10242D5 - + event_field_d102b734:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_D10242D5 - + event_field_d102b734:w->spec_27641a:e - - - - - - - + + + + + + + +SCHCRWLR_0026EFBB_D10242D5 global_attribute_bit_e934f16d - - -GLOBAL_ATTRIBUTE_BIT - -[table] -GLOBAL_ATTRIBUTE_DEFAULT_REF - -INTEGER NOT NULL -BIT - -INTEGER NOT NULL -"VALUE" - -INTEGER -TAG_REF - -INTEGER NOT NULL - + + +GLOBAL_ATTRIBUTE_BIT + +[table] +GLOBAL_ATTRIBUTE_DEFAULT_REF + +INTEGER NOT NULL +BIT + +INTEGER NOT NULL +"VALUE" + +INTEGER +TAG_REF + +INTEGER NOT NULL + global_attribute_bit_e934f16d:w->global_attribute_default_73c65a21:e - - - - - - - + + + + + + + +SCHCRWLR_73C5E5C2_E9347D0E global_attribute_bit_e934f16d:w->tag_1b7d9:e - - - - - - - + + + + + + + +SCHCRWLR_0001437A_E9347D0E - + operation_93359a6:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_0932E547 package_fab13485:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_FAB0C026 package_extension_2789e3a5 - - -PACKAGE_EXTENSION - -[table] -PACKAGE_EXTENSION_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -ENTITY - -TEXT -PROPERTY - -TEXT -TYPE - -TEXT -CONFIGURABILITY - -TEXT -LABEL - -TEXT -GLOBAL_DEFAULT - -TEXT - + + +PACKAGE_EXTENSION + +[table] +PACKAGE_EXTENSION_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +ENTITY + +TEXT +PROPERTY + +TEXT +TYPE + +TEXT +CONFIGURABILITY + +TEXT +LABEL + +TEXT +GLOBAL_DEFAULT + +TEXT + - + package_extension_2789e3a5:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_27896F46 package_notice_176ee570 - - -PACKAGE_NOTICE - -[table] -PACKAGE_REF - -INTEGER -NOTICE_TYPE - -TEXT -NOTICE_MESSAGE - -TEXT -NOTICE_SEVERITY - -INTEGER -NOTICE_ID - -INTEGER - -auto-incremented - + + +PACKAGE_NOTICE + +[table] +PACKAGE_REF + +INTEGER +NOTICE_TYPE + +TEXT +NOTICE_MESSAGE + +TEXT +NOTICE_SEVERITY + +INTEGER +NOTICE_ID + +INTEGER + +auto-incremented + - + package_notice_176ee570:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_176E7111 package_option_1931d70d - - -PACKAGE_OPTION - -[table] -OPTION_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -OPTION_CATEGORY - -TEXT -OPTION_CODE - -TEXT -OPTION_LABEL - -TEXT - + + +PACKAGE_OPTION + +[table] +OPTION_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +OPTION_CATEGORY + +TEXT +OPTION_CODE + +TEXT +OPTION_LABEL + +TEXT + - + package_option_1931d70d:w->package_fab13485:e - - - - - - - - - - -role_26ecd5:w->package_fab13485:e - - - - - - - - - - -spec_27641a:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_193162AE - + package_option_default_64a251ef - - -PACKAGE_OPTION_DEFAULT - -[table] -OPTION_DEFAULT_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -OPTION_CATEGORY - -TEXT -OPTION_REF - -INTEGER - + + +PACKAGE_OPTION_DEFAULT + +[table] +OPTION_DEFAULT_ID + +INTEGER + +auto-incremented +PACKAGE_REF + +INTEGER +OPTION_CATEGORY + +TEXT +OPTION_REF + +INTEGER + - + package_option_default_64a251ef:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_64A1DD90 package_option_default_64a251ef:w->package_option_1931d70d:e - - - - - - - + + + + + + + +SCHCRWLR_193162AE_64A1DD90 + + + +role_26ecd5:w->package_fab13485:e + + + + + + + +SCHCRWLR_FAB0C026_00267876 - + session_package_61fa13bc - - -SESSION_PACKAGE - -[table] -SESSION_REF - -INTEGER -PACKAGE_REF - -INTEGER -REQUIRED - -INTEGER -ENABLED - -INTEGER - + + +SESSION_PACKAGE + +[table] +SESSION_REF + +INTEGER +PACKAGE_REF + +INTEGER +REQUIRED + +INTEGER +ENABLED + +INTEGER + - + session_package_61fa13bc:w->package_fab13485:e - - - - - - - + + + + + + + +SCHCRWLR_FAB0C026_61F99F5D session_package_61fa13bc:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_61F99F5D + + + +spec_27641a:w->package_fab13485:e + + + + + + + +SCHCRWLR_FAB0C026_0026EFBB package_extension_default_d8d04687 - - -PACKAGE_EXTENSION_DEFAULT - -[table] -PACKAGE_EXTENSION_REF - -INTEGER -ENTITY_CODE - -INTEGER -ENTITY_QUALIFIER - -TEXT -PARENT_CODE - -INTEGER -MANUFACTURER_CODE - -INTEGER -"VALUE" - -TEXT - + + +PACKAGE_EXTENSION_DEFAULT + +[table] +PACKAGE_EXTENSION_REF + +INTEGER +ENTITY_CODE + +INTEGER +ENTITY_QUALIFIER + +TEXT +PARENT_CODE + +INTEGER +MANUFACTURER_CODE + +INTEGER +"VALUE" + +TEXT + package_extension_default_d8d04687:w->package_extension_2789e3a5:e - - - - - - - + + + + + + + +SCHCRWLR_27896F46_D8CFD228 package_extension_value_8e65d377 - - -PACKAGE_EXTENSION_VALUE - -[table] -PACKAGE_EXTENSION_VALUE_ID - -INTEGER - -auto-incremented -PACKAGE_EXTENSION_REF - -INTEGER -SESSION_REF - -INTEGER -ENTITY_CODE - -INTEGER -PARENT_CODE - -INTEGER -"VALUE" - -TEXT - + + +PACKAGE_EXTENSION_VALUE + +[table] +PACKAGE_EXTENSION_VALUE_ID + +INTEGER + +auto-incremented +PACKAGE_EXTENSION_REF + +INTEGER +SESSION_REF + +INTEGER +ENTITY_CODE + +INTEGER +PARENT_CODE + +INTEGER +"VALUE" + +TEXT + package_extension_value_8e65d377:w->package_extension_2789e3a5:e - - - - - - - + + + + + + + +SCHCRWLR_27896F46_8E655F18 - + package_extension_value_8e65d377:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_8E655F18 user_28582a - - -"USER" - -[table] -USER_ID - -INTEGER - -auto-incremented -USER_KEY - -TEXT -CREATION_TIME - -INTEGER - + + +"USER" + +[table] +USER_ID + +INTEGER + +auto-incremented +USER_KEY + +TEXT +CREATION_TIME + +INTEGER + session_a11c82d5:w->user_28582a:e - - - - - - - + + + + + + + +SCHCRWLR_3ED95AD5_A11C0E76 session_key_value_334d9527 - - -SESSION_KEY_VALUE - -[table] -SESSION_REF - -INTEGER -KEY - -TEXT -"VALUE" - -TEXT - + + +SESSION_KEY_VALUE + +[table] +SESSION_REF + +INTEGER +KEY + +TEXT +"VALUE" + +TEXT + - + session_key_value_334d9527:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_334D20C8 session_log_7f10ae3a - - -SESSION_LOG - -[table] -SESSION_REF - -INTEGER -"TIMESTAMP" - -TEXT -LOG - -TEXT - + + +SESSION_LOG + +[table] +SESSION_REF + +INTEGER +"TIMESTAMP" + +TEXT +LOG + +TEXT + - + session_log_7f10ae3a:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_7F1039DB session_notice_84addd20 - - -SESSION_NOTICE - -[table] -SESSION_REF - -INTEGER -NOTICE_TYPE - -TEXT -NOTICE_MESSAGE - -TEXT -NOTICE_SEVERITY - -INTEGER -NOTICE_ID - -INTEGER - -auto-incremented -DISPLAY - -INTEGER -SEEN - -INTEGER - + + +SESSION_NOTICE + +[table] +SESSION_REF + +INTEGER +NOTICE_TYPE + +TEXT +NOTICE_MESSAGE + +TEXT +NOTICE_SEVERITY + +INTEGER +NOTICE_ID + +INTEGER + +auto-incremented +DISPLAY + +INTEGER +SEEN + +INTEGER + - + session_notice_84addd20:w->session_a11c82d5:e - - - - - - - + + + + + + + +SCHCRWLR_A11C0E76_84AD68C1 setting_a12b0e8f - - -SETTING - -[table] -CATEGORY - -TEXT -KEY - -TEXT -"VALUE" - -TEXT - + + +SETTING + +[table] +CATEGORY + +TEXT +KEY + +TEXT +"VALUE" + +TEXT + diff --git a/src-electron/db/db-mapping.js b/src-electron/db/db-mapping.js index 5f3edba78a..fcb813b84a 100644 --- a/src-electron/db/db-mapping.js +++ b/src-electron/db/db-mapping.js @@ -124,6 +124,7 @@ exports.map = { entryType: x.ARRAY_TYPE, isArray: x.ARRAY_TYPE ? 1 : 0, mustUseTimedWrite: dbApi.fromDbBool(x.MUST_USE_TIMED_WRITE), + apiMaturity: x.API_MATURITY, } }, @@ -519,6 +520,7 @@ exports.map = { minInterval: x.MIN_INTERVAL, maxInterval: x.MAX_INTERVAL, reportableChange: x.REPORTABLE_CHANGE, + apiMaturity: x.API_MATURITY, } }, @@ -580,6 +582,7 @@ exports.map = { storageOption: x.STORAGE_OPTION, tokenId: x.TOKEN_ID, // Endpoint type attribute's token id type: x.TYPE != 'array' ? x.TYPE : x.ARRAY_TYPE, // Attribute type + apiMaturity: x.API_MATURITY, } }, diff --git a/src-electron/db/query-attribute.js b/src-electron/db/query-attribute.js index 27c0726317..2f307b97db 100644 --- a/src-electron/db/query-attribute.js +++ b/src-electron/db/query-attribute.js @@ -54,7 +54,8 @@ async function selectEndpointTypeAttributesByEndpointTypeRefAndClusterRef( INCLUDED_REPORTABLE, MIN_INTERVAL, MAX_INTERVAL, - REPORTABLE_CHANGE + REPORTABLE_CHANGE, + API_MATURITY from ENDPOINT_TYPE_ATTRIBUTE where @@ -197,7 +198,8 @@ async function selectAllAttributeDetailsFromEnabledClusters( ENDPOINT_TYPE_ATTRIBUTE.DEFAULT_VALUE, ENDPOINT_TYPE_ATTRIBUTE.MIN_INTERVAL, ENDPOINT_TYPE_ATTRIBUTE.MAX_INTERVAL, - ENDPOINT_TYPE_ATTRIBUTE.REPORTABLE_CHANGE + ENDPOINT_TYPE_ATTRIBUTE.REPORTABLE_CHANGE, + ATTRIBUTE.API_MATURITY FROM ATTRIBUTE INNER JOIN ENDPOINT_TYPE_ATTRIBUTE ON ATTRIBUTE.ATTRIBUTE_ID = ENDPOINT_TYPE_ATTRIBUTE.ATTRIBUTE_REF @@ -254,7 +256,8 @@ async function selectAttributeDetailsFromAllEndpointTypesAndClustersUtil( ATTRIBUTE.MANUFACTURER_CODE, ENDPOINT_TYPE_CLUSTER.SIDE, CLUSTER.NAME AS CLUSTER_NAME, - ENDPOINT_TYPE_CLUSTER.ENABLED + ENDPOINT_TYPE_CLUSTER.ENABLED, + ATTRIBUTE.API_MATURITY FROM ATTRIBUTE INNER JOIN @@ -857,7 +860,8 @@ SELECT A.IS_NULLABLE, A.IS_SCENE_REQUIRED, A.ARRAY_TYPE, - A.MUST_USE_TIMED_WRITE + A.MUST_USE_TIMED_WRITE, + A.API_MATURITY FROM ATTRIBUTE AS A INNER JOIN CLUSTER AS C ON C.CLUSTER_ID = A.CLUSTER_REF @@ -913,7 +917,8 @@ SELECT A.IS_NULLABLE, A.IS_SCENE_REQUIRED, A.ARRAY_TYPE, - A.MUST_USE_TIMED_WRITE + A.MUST_USE_TIMED_WRITE, + A.API_MATURITY FROM ATTRIBUTE AS A WHERE A.PACKAGE_REF IN (${dbApi.toInClause(packageIds)}) AND A.CODE = ? @@ -1005,7 +1010,8 @@ async function selectTokenAttributesForEndpoint( CLUSTER.NAME AS CLUSTER_NAME, CLUSTER.DEFINE AS CLUSTER_DEFINE, ENDPOINT_TYPE_ATTRIBUTE.SINGLETON, - ENDPOINT_TYPE_ATTRIBUTE.STORAGE_OPTION + ENDPOINT_TYPE_ATTRIBUTE.STORAGE_OPTION, + ATTRIBUTE.API_MATURITY FROM ATTRIBUTE INNER JOIN diff --git a/src-electron/db/query-endpoint.js b/src-electron/db/query-endpoint.js index 0e7f2377ad..698c7ce4d3 100644 --- a/src-electron/db/query-endpoint.js +++ b/src-electron/db/query-endpoint.js @@ -135,6 +135,7 @@ SELECT A.IS_SCENE_REQUIRED, A.IS_OPTIONAL, A.DEFINE, + A.API_MATURITY, EA.STORAGE_OPTION, EA.SINGLETON, EA.BOUNDED, @@ -192,6 +193,7 @@ ORDER BY A.MANUFACTURER_CODE, A.CODE maxInterval: row.MAX_INTERVAL, reportableChange: row.REPORTABLE_CHANGE, define: row.DEFINE, + apiMaturity: row.API_MATURITY, } }) } diff --git a/src-electron/db/query-impexp.js b/src-electron/db/query-impexp.js index 6e7ccae637..4a44b84361 100644 --- a/src-electron/db/query-impexp.js +++ b/src-electron/db/query-impexp.js @@ -566,7 +566,7 @@ async function exportAttributesFromEndpointTypeCluster( endpointClusterId ) { let mapFunction = (x) => { - return { + let result = { name: x.NAME, code: x.CODE, mfgCode: x.MANUFACTURER_CODE, @@ -582,6 +582,11 @@ async function exportAttributesFromEndpointTypeCluster( maxInterval: x.MAX_INTERVAL, reportableChange: x.REPORTABLE_CHANGE, } + if (x.API_MATURITY) { + result.apiMaturity = x.API_MATURITY + } + + return result } return dbApi .dbAll( diff --git a/src-electron/db/query-loader.js b/src-electron/db/query-loader.js index 8ea4178db3..cfc1f23043 100644 --- a/src-electron/db/query-loader.js +++ b/src-electron/db/query-loader.js @@ -159,11 +159,13 @@ INSERT INTO ATTRIBUTE ( MUST_USE_TIMED_WRITE, MANUFACTURER_CODE, INTRODUCED_IN_REF, - REMOVED_IN_REF + REMOVED_IN_REF, + API_MATURITY ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?), - (SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?) + (SELECT SPEC_ID FROM SPEC WHERE CODE = ? AND PACKAGE_REF = ?), + ? )` const SELECT_CLUSTER_SPECIFIC_DATA_TYPE = ` @@ -224,6 +226,7 @@ function attributeMap(clusterId, packageId, attributes) { packageId, attribute.removedIn, packageId, + attribute.apiMaturity, ]) } diff --git a/src-electron/db/query-zcl.js b/src-electron/db/query-zcl.js index c08aed2982..ba6def2a7b 100644 --- a/src-electron/db/query-zcl.js +++ b/src-electron/db/query-zcl.js @@ -670,7 +670,8 @@ SELECT IS_NULLABLE, IS_SCENE_REQUIRED, ARRAY_TYPE, - MUST_USE_TIMED_WRITE + MUST_USE_TIMED_WRITE, + API_MATURITY FROM ATTRIBUTE WHERE (CLUSTER_REF = ? OR CLUSTER_REF IS NULL) AND PACKAGE_REF IN (${dbApi.toInClause(packageIds)}) @@ -715,7 +716,8 @@ SELECT IS_NULLABLE, IS_SCENE_REQUIRED, ARRAY_TYPE, - MUST_USE_TIMED_WRITE + MUST_USE_TIMED_WRITE, + API_MATURITY FROM ATTRIBUTE WHERE SIDE = ? @@ -779,7 +781,8 @@ SELECT A.IS_NULLABLE, A.IS_SCENE_REQUIRED, A.ARRAY_TYPE, - A.MUST_USE_TIMED_WRITE + A.MUST_USE_TIMED_WRITE, + A.API_MATURITY FROM ATTRIBUTE AS A, CLUSTER AS C @@ -823,7 +826,8 @@ SELECT IS_NULLABLE, IS_SCENE_REQUIRED, ARRAY_TYPE, - MUST_USE_TIMED_WRITE + MUST_USE_TIMED_WRITE, + API_MATURITY FROM ATTRIBUTE WHERE ATTRIBUTE_ID = ?`, [id] @@ -886,7 +890,8 @@ SELECT A.IS_NULLABLE, A.IS_SCENE_REQUIRED, A.ARRAY_TYPE, - A.MUST_USE_TIMED_WRITE + A.MUST_USE_TIMED_WRITE, + A.API_MATURITY FROM ATTRIBUTE AS A WHERE ATTRIBUTE_ID = ?`, [clusterRef, clusterRef, attributeId] @@ -925,6 +930,7 @@ SELECT A.IS_SCENE_REQUIRED, A.ARRAY_TYPE, A.MUST_USE_TIMED_WRITE, + A.API_MATURITY, C.CODE AS CLUSTER_CODE FROM ATTRIBUTE AS A @@ -978,7 +984,8 @@ SELECT IS_NULLABLE, IS_SCENE_REQUIRED, ARRAY_TYPE, - MUST_USE_TIMED_WRITE + MUST_USE_TIMED_WRITE, + API_MATURITY FROM ATTRIBUTE WHERE SIDE = ? AND PACKAGE_REF IN (${dbApi.toInClause(packageIds)}) diff --git a/src-electron/db/zap-schema.sql b/src-electron/db/zap-schema.sql index c5567115cd..0074c0339d 100644 --- a/src-electron/db/zap-schema.sql +++ b/src-electron/db/zap-schema.sql @@ -279,6 +279,7 @@ CREATE TABLE IF NOT EXISTS "ATTRIBUTE" ( "MUST_USE_TIMED_WRITE" integer, "INTRODUCED_IN_REF" integer, "REMOVED_IN_REF" integer, + "API_MATURITY" text, foreign key (INTRODUCED_IN_REF) references SPEC(SPEC_ID), foreign key (REMOVED_IN_REF) references SPEC(SPEC_ID), foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID), diff --git a/src-electron/zcl/zcl-loader-silabs.js b/src-electron/zcl/zcl-loader-silabs.js index f51181189b..08a6d148ea 100644 --- a/src-electron/zcl/zcl-loader-silabs.js +++ b/src-electron/zcl/zcl-loader-silabs.js @@ -598,6 +598,7 @@ function prepareCluster(cluster, context, isExtension = false) { isNullable: attribute.$.isNullable == 'true' ? true : false, entryType: attribute.$.entryType, mustUseTimedWrite: attribute.$.mustUseTimedWrite == 'true', + apiMaturity: attribute.$.apiMaturity, } att.access = extractAccessIntoArray(attribute) if (att.manufacturerCode == null) { diff --git a/test/gen-matter-api-maturity.test.js b/test/gen-matter-api-maturity.test.js index bce65af3f3..6709f4190c 100644 --- a/test/gen-matter-api-maturity.test.js +++ b/test/gen-matter-api-maturity.test.js @@ -96,6 +96,12 @@ test( // Expect that the maturity test cluster is tagged as internal expect(ept).toContain('client cluster ApiMaturityTest = 4386 (internal) {') expect(ept).toContain('server cluster ApiMaturityTest = 4386 (internal) {') + + // attribute tagging + expect(ept).toContain('optional int8u attribute stableAttribute = 0;') + expect(ept).toContain( + 'optional int8u attribute provisionalAttribute = 1 (provisional);' + ) }, testUtil.timeout.long() ) diff --git a/test/gen-meta.test.js b/test/gen-meta.test.js index fd94ac8291..9197d89c16 100644 --- a/test/gen-meta.test.js +++ b/test/gen-meta.test.js @@ -71,21 +71,33 @@ test( const attributes = await queryZcl.selectAllAttributes(db, [ zclContext.packageId, ]) - expect(attributes.length).toBe(4) - expect(attributes[0].name).toBe('at1') - expect(attributes[1].name).toBe('at2') + expect(attributes.length).toBeGreaterThanOrEqual(4) - let access - access = await queryAccess.selectAttributeAccess(db, attributes[0].id) - expect(access.length).toBe(1) - expect(access[0].operation).toBe('write') - expect(access[0].role).toBe('manage') - expect(access[0].accessModifier).toBe('fabric-scoped') - access = await queryAccess.selectAttributeAccess(db, attributes[1].id) - expect(access.length).toBe(1) - expect(access[0].operation).toBeNull() - expect(access[0].role).toBeNull() - expect(access[0].accessModifier).toBe('fabric-sensitive') + // Expect attributes at1 and at2 to be found + let hasAt1 = false + let hasAt2 = false + + for (const attr of attributes) { + if (attr.name == 'at1') { + hasAt1 = true + + let access = await queryAccess.selectAttributeAccess(db, attr.id) + expect(access.length).toBe(1) + expect(access[0].operation).toBe('write') + expect(access[0].role).toBe('manage') + expect(access[0].accessModifier).toBe('fabric-scoped') + } else if (attr.name == 'at2') { + hasAt2 = true + + let access = await queryAccess.selectAttributeAccess(db, attr.id) + expect(access.length).toBe(1) + expect(access[0].operation).toBeNull() + expect(access[0].role).toBeNull() + expect(access[0].accessModifier).toBe('fabric-sensitive') + } + } + expect(hasAt1).toBeTruthy() + expect(hasAt2).toBeTruthy() const structs = await queryZcl.selectAllStructsWithItemCount(db, [ zclContext.packageId, diff --git a/test/gen-template/matter-api-maturity/codegen_test.zapt b/test/gen-template/matter-api-maturity/codegen_test.zapt index 1bf5e1a7ce..33930af0cd 100644 --- a/test/gen-template/matter-api-maturity/codegen_test.zapt +++ b/test/gen-template/matter-api-maturity/codegen_test.zapt @@ -7,7 +7,65 @@ Here are all clusters: cluster {{asUpperCamelCase name}} = {{code}} {{~#if apiMaturity}} ({{apiMaturity}}){{/if}} {{!~}} { - // TODO: add attributes, structures and any other things needed here + {{#zcl_enums}} + enum {{asUpperCamelCase name preserveAcronyms=true}} : ENUM{{multiply size 8}}; + + {{/zcl_enums}} + {{#zcl_bitmaps}} + bitmap {{asUpperCamelCase name preserveAcronyms=true}} : BITMAP{{multiply size 8}}; + + {{/zcl_bitmaps}} + {{#zcl_events}} + {{priority}} event {{asUpperCamelCase name preserveAcronyms=true}} = {{code}} { + {{#zcl_event_fields}} + {{#if isOptional~}}optional {{/if~}} + {{~#if isNullable~}}nullable {{/if~}} + {{~#if isFabricSensitive~}}fabric_sensitive {{/if~}} + {{type}} {{asLowerCamelCase name~}} + {{~#if isArray~}} [] {{~/if}} = {{fieldIdentifier}}; + {{/zcl_event_fields}} + } + + {{/zcl_events}} + {{#zcl_structs}} + struct {{name}} { + {{#zcl_struct_items}} + {{#if isOptional~}}optional {{/if~}} + {{~#if isNullable~}}nullable {{/if~}} + {{~#if isFabricSensitive~}}fabric_sensitive {{/if~}} + {{type}} {{asLowerCamelCase label~}} + {{~#if isArray~}} [] {{~/if}} = {{fieldIdentifier}}; + {{/zcl_struct_items}} + } + + {{/zcl_structs}} + + {{#zcl_attributes_server}} + {{#unless isGlobalAttribute}} + {{! ensure indent ~}} + {{#if isOptional~}} optional {{/if~}} + {{~#unless isWritableAttribute~}} readonly {{/unless~}} + {{~#if isNullable~}} nullable {{/if~}} + {{type}} attribute {{asLowerCamelCase name~}} {{~#if isArray~}} [] {{~/if}} = {{code~}} + {{~#if apiMaturity}} ({{apiMaturity}}) {{~/if~}}; + {{/unless}} + + {{/zcl_attributes_server}} + + {{#zcl_commands}} + command {{asUpperCamelCase commandName}} = {{code}} { + {{#zcl_command_arguments}} + {{#if isOptional~}}optional {{/if~}} + {{~#if isNullable~}}nullable {{/if~}} + {{~#if isFabricSensitive~}}fabric_sensitive {{/if~}} + {{type}} {{asLowerCamelCase label~}} + {{~#if isArray~}} [] {{~/if}} = {{fieldIdentifier}}; + {{/zcl_command_arguments}} + } + + {{/zcl_commands}} } {{~/all_user_clusters}} + + diff --git a/test/resource/meta/api_maturity.xml b/test/resource/meta/api_maturity.xml index 029534ed7b..a1b1b99ed1 100644 --- a/test/resource/meta/api_maturity.xml +++ b/test/resource/meta/api_maturity.xml @@ -25,12 +25,17 @@ limitations under the License. false true + StableAttribute + ProvisionalAttribute + + StableAttribute + A Test command diff --git a/zcl-builtin/shared/schema/zcl.xsd b/zcl-builtin/shared/schema/zcl.xsd index 24dd0dff1c..172a73b675 100644 --- a/zcl-builtin/shared/schema/zcl.xsd +++ b/zcl-builtin/shared/schema/zcl.xsd @@ -479,6 +479,7 @@ This schema describes the format of the XML files, that describe the ZCL specifi + From e2a4fb2ada9224e69bd04464733c23aea8ccc785 Mon Sep 17 00:00:00 2001 From: Paul Regan Date: Mon, 23 Oct 2023 11:37:21 -0400 Subject: [PATCH 2/3] fix xml validation error --- test/resource/meta/api_maturity.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/resource/meta/api_maturity.xml b/test/resource/meta/api_maturity.xml index a1b1b99ed1..90e519e94a 100644 --- a/test/resource/meta/api_maturity.xml +++ b/test/resource/meta/api_maturity.xml @@ -25,9 +25,6 @@ limitations under the License. false true - StableAttribute - ProvisionalAttribute - From 6edff8e9e222d4bd4776725b6fd1ee85724c817f Mon Sep 17 00:00:00 2001 From: Paul Regan Date: Mon, 23 Oct 2023 12:13:38 -0400 Subject: [PATCH 3/3] add attributes back correctly --- test/resource/meta/api_maturity.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/resource/meta/api_maturity.xml b/test/resource/meta/api_maturity.xml index 90e519e94a..2b0d1b84d1 100644 --- a/test/resource/meta/api_maturity.xml +++ b/test/resource/meta/api_maturity.xml @@ -30,7 +30,8 @@ limitations under the License. - + StableAttribute + ProvisionalAttribute StableAttribute