diff --git a/apack.json b/apack.json index ec97804203..2e1f0ad3fa 100644 --- a/apack.json +++ b/apack.json @@ -4,7 +4,7 @@ "description": "Graphical configuration tool for application and libraries based on Zigbee Cluster Library.", "path": [".", "node_modules/.bin/", "ZAP.app/Contents/MacOS"], "requiredFeatureLevel": "apack.core:9", - "featureLevel": 101, + "featureLevel": 102, "uc.triggerExtension": "zap", "executable": { "zap:win32.x86_64": { diff --git a/docs/zap-schema.svg b/docs/zap-schema.svg index 095ca42336..d841d1ce02 100644 --- a/docs/zap-schema.svg +++ b/docs/zap-schema.svg @@ -4,2572 +4,2570 @@ - - + + SchemaCrawler_Diagram - -generated by -SchemaCrawler 16.20.6 -generated on -2024-02-06 12:14:39 - + +generated by +SchemaCrawler 16.16.18 +generated on +2024-04-15 15:19:11 + 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 -API_MATURITY - -TEXT - + +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 -API_MATURITY - -TEXT - + +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 - - - - -SCHCRWLR_7298451E_0CE4A0C0 + + + + - + +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 + + + + + + + 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_PARTITION_REF - -INTEGER -NAME - -TEXT - + +ENDPOINT_TYPE + +[table] +ENDPOINT_TYPE_ID + +INTEGER + +auto-incremented +SESSION_PARTITION_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 - - - - -SCHCRWLR_985767A4_C12DC83F + + + + - + + +feature_f06e7b35 + +FEATURE + +[table] +FEATURE_ID + +INTEGER + +auto-incremented +NAME + +TEXT +CODE + +TEXT +BIT + +INTEGER +DEFAULT_VALUE + +INTEGER +DESCRIPTION + +TEXT +CONFORMANCE + +TEXT +PACKAGE_REF + +INTEGER +CLUSTER_REF + +INTEGER + + + + +feature_f06e7b35:w->cluster_5ec71239:e + + + + + + + +feature_f06e7b35:w->package_fab13485: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 + + + + + + + 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 + + + + - - -tag_1b7d9 - -TAG - -[table] -TAG_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -CLUSTER_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - + + +command_6371df8a:w->cluster_5ec71239:e + + + + - - -tag_1b7d9:w->cluster_5ec71239:e - - - - -SCHCRWLR_5EC69DDA_0001437A + + +command_6371df8a:w->command_6371df8a:e + + + + - - -tag_1b7d9:w->package_fab13485:e - - - - -SCHCRWLR_FAB0C026_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 + + + + - + 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 -IS_INCOMING - -INTEGER -IS_ENABLED - -INTEGER - - - - -endpoint_type_command_c5d909ef:w->command_6371df8a:e - - - - -SCHCRWLR_63716B2B_C5D89590 + +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->endpoint_type_cluster_c12e3c9e:e - - - - -SCHCRWLR_C12DC83F_C5D89590 + + + + + + + +endpoint_type_command_c5d909ef:w->command_6371df8a:e + + + + - + 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 + + + + + + + +device_type_feature_4402279 + +DEVICE_TYPE_FEATURE + +[table] +DEVICE_TYPE_CLUSTER_REF + +INTEGER +FEATURE_REF + +INTEGER +FEATURE_CODE + +TEXT + + + + +device_type_feature_4402279:w->device_type_cluster_7298b97d:e + + + + + + + +device_type_feature_4402279:w->feature_f06e7b35:e + + + + - + 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 +PARENT_ENDPOINT_REF + +INTEGER + + + + +endpoint_966d81f4:w->endpoint_966d81f4:e + + + + - + 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 -NEW_NOTIFICATION - -INTEGER - + +SESSION + +[table] +SESSION_ID + +INTEGER + +auto-incremented +USER_REF + +INTEGER +SESSION_KEY + +TEXT +CREATION_TIME + +INTEGER +DIRTY + +INTEGER +NEW_NOTIFICATION + +INTEGER + - + endpoint_966d81f4:w->session_a11c82d5:e - - - - -SCHCRWLR_A11C0E76_966D0D95 + + + + - + session_partition_f35f84a0 - -SESSION_PARTITION - -[table] -SESSION_PARTITION_ID - -INTEGER - -auto-incremented -SESSION_PARTITION_NUMBER - -INTEGER -SESSION_REF - -INTEGER - + +SESSION_PARTITION + +[table] +SESSION_PARTITION_ID + +INTEGER + +auto-incremented +SESSION_PARTITION_NUMBER + +INTEGER +SESSION_REF + +INTEGER + - + endpoint_type_9857dc03:w->session_partition_f35f84a0:e - - - - -SCHCRWLR_F35F1041_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 - - - - -SCHCRWLR_FAB0C026_193162AE + + + + + + + +role_26ecd5:w->package_fab13485:e + + + + + + + +spec_27641a:w->package_fab13485:e + + + + - + 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_PARTITION_REF - -INTEGER -PACKAGE_REF - -INTEGER -REQUIRED - -INTEGER -ENABLED - -INTEGER - + +SESSION_PACKAGE + +[table] +SESSION_PARTITION_REF + +INTEGER +PACKAGE_REF + +INTEGER +REQUIRED + +INTEGER +ENABLED + +INTEGER + - + session_package_61fa13bc:w->package_fab13485:e - - - - -SCHCRWLR_FAB0C026_61F99F5D + + + + - + session_package_61fa13bc:w->session_partition_f35f84a0:e - - - - -SCHCRWLR_F35F1041_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 + + + + - + session_partition_f35f84a0:w->session_a11c82d5:e - - - - -SCHCRWLR_A11C0E76_F35F1041 + + + + - + 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 964c132736..ca5f13217e 100644 --- a/src-electron/db/db-mapping.js +++ b/src-electron/db/db-mapping.js @@ -522,6 +522,24 @@ exports.map = { deviceVersion: x.DEVICE_VERSION, } }, + endpointTypeDeviceExtended: (x) => { + if (x == null) return undefined + return { + id: x.ENDPOINT_TYPE_DEVICE_ID, + deviceTypeRef: x.DEVICE_TYPE_REF, + endpointTypeRef: x.ENDPOINT_TYPE_REF, + endpointTypeId: x.ENDPOINT_TYPE_REF, + deviceTypeOrder: x.DEVICE_TYPE_ORDER, + deviceIdentifier: x.DEVICE_IDENTIFIER, + deviceId: x.DEVICE_IDENTIFIER, + deviceVersion: x.DEVICE_VERSION, + featureId: x.FEATURE_ID, + featureCode: x.FEATURE_CODE, + featureName: x.FEATURE_NAME, + featureBit: x.FEATURE_BIT, + clusterId: x.CLUSTER_REF, + } + }, endpointTypeCluster: (x) => { if (x == null) return undefined return { diff --git a/src-electron/db/query-config.js b/src-electron/db/query-config.js index 736873ef9b..32db1a62c8 100644 --- a/src-electron/db/query-config.js +++ b/src-electron/db/query-config.js @@ -213,6 +213,28 @@ async function insertOrUpdateAttributeState( attributeId, clusterRef ) + // Looking for the feature map attribute in matter and setting it as per + // the device types if default value is 0 + if ( + staticAttribute.code == 0xfffc && + staticAttribute.name == 'FeatureMap' && + staticAttribute.defaultValue == 0 + ) { + let featureMapDefaultValue = staticAttribute.defaultValue + let mandatoryFeaturesOnEndpointTypeAndCluster = + await queryDeviceType.selectDeviceTypeFeaturesByEndpointTypeIdAndClusterId( + db, + endpointTypeId, + clusterRef + ) + let featureMapBitsToBeEnabled = + mandatoryFeaturesOnEndpointTypeAndCluster.map((f) => f.featureBit) + featureMapBitsToBeEnabled.forEach( + (featureBit) => + (featureMapDefaultValue = featureMapDefaultValue | (1 << featureBit)) + ) + staticAttribute.defaultValue = featureMapDefaultValue + } let forcedExternal = await queryUpgrade.getForcedExternalStorage(db) staticAttribute.storagePolicy = await queryUpgrade.computeStoragePolicyNewConfig( @@ -314,7 +336,7 @@ async function updateEndpointTypeAttribute(db, id, keyValuePairs) { }) args.push(id) - let query = `UPDATE ENDPOINT_TYPE_ATTRIBUTE SET + let query = `UPDATE ENDPOINT_TYPE_ATTRIBUTE SET ${columns} WHERE ENDPOINT_TYPE_ATTRIBUTE_ID = ?` return dbApi.dbUpdate(db, query, args) @@ -508,7 +530,7 @@ INTO ENDPOINT_TYPE_EVENT ( db, ` UPDATE ENDPOINT_TYPE_EVENT -SET INCLUDED = ? +SET INCLUDED = ? WHERE ENDPOINT_TYPE_REF = ? AND ENDPOINT_TYPE_CLUSTER_REF = ? AND EVENT_REF = ? `, @@ -1372,17 +1394,17 @@ async function selectEndpointTypeAttributeId( let rows = await dbApi.dbAll( db, ` -SELECT +SELECT ENDPOINT_TYPE_ATTRIBUTE_ID -FROM +FROM ENDPOINT_TYPE_ATTRIBUTE AS ETA INNER JOIN ATTRIBUTE AS A ON - ETA.ATTRIBUTE_REF = A.ATTRIBUTE_ID + ETA.ATTRIBUTE_REF = A.ATTRIBUTE_ID INNER JOIN CLUSTER AS C -ON +ON C.CLUSTER_ID = A.CLUSTER_REF WHERE ETA.ENDPOINT_TYPE_REF = ? diff --git a/src-electron/db/query-device-type.js b/src-electron/db/query-device-type.js index 4fb96a4ade..0a7c0b6f86 100644 --- a/src-electron/db/query-device-type.js +++ b/src-electron/db/query-device-type.js @@ -312,6 +312,45 @@ WHERE ) } +/** + * After loading up device type feature table with the names, + * this method links the refererence to actual feature reference. + * + * @param {*} db + * @returns promise of completion + */ +async function updateFeatureReferencesForDeviceTypeReferences(db, packageId) { + return dbApi.dbUpdate( + db, + ` +UPDATE + DEVICE_TYPE_FEATURE +SET + FEATURE_REF = + ( SELECT + FEATURE.FEATURE_ID + FROM + FEATURE + WHERE + upper(FEATURE.CODE) = upper(DEVICE_TYPE_FEATURE.FEATURE_CODE) + AND + FEATURE.CLUSTER_REF = ( + SELECT + DEVICE_TYPE_CLUSTER.CLUSTER_REF + FROM + DEVICE_TYPE_CLUSTER + WHERE + DEVICE_TYPE_CLUSTER_ID = DEVICE_TYPE_FEATURE.DEVICE_TYPE_CLUSTER_REF + ) + AND + FEATURE.PACKAGE_REF = ? + ) +WHERE + DEVICE_TYPE_FEATURE.FEATURE_REF IS NULL`, + [packageId] + ) +} + /** * This method returns the promise of linking the device type clusters * commands and attributes to the correct IDs in the cluster, attribute @@ -326,7 +365,8 @@ WHERE async function updateDeviceTypeEntityReferences(db, packageId) { await updateClusterReferencesForDeviceTypeClusters(db, packageId) await updateAttributeReferencesForDeviceTypeReferences(db, packageId) - return updateCommandReferencesForDeviceTypeReferences(db, packageId) + await updateCommandReferencesForDeviceTypeReferences(db, packageId) + return updateFeatureReferencesForDeviceTypeReferences(db, packageId) } /** @@ -355,6 +395,62 @@ async function selectDeviceTypesByEndpointTypeId(db, endpointTypeId) { return rows.map(dbMapping.map.endpointTypeDevice) } +/** + * Retrieves the device type features associated to an endpoint type id and cluster id + * Note: Use clusterId as 'all' to get all features for an endpoint type id. + * @param {*} db + * @param {*} endpointTypeId + * @param {*} clusterId + * @returns promise with zcl device type feature information based on endpoint type id and cluster id + */ +async function selectDeviceTypeFeaturesByEndpointTypeIdAndClusterId( + db, + endpointTypeId, + clusterId +) { + let rows = await dbApi.dbAll( + db, + ` + SELECT + ETD.ENDPOINT_TYPE_DEVICE_ID, + ETD.DEVICE_TYPE_REF, + ETD.ENDPOINT_TYPE_REF, + ETD.DEVICE_TYPE_ORDER, + ETD.DEVICE_IDENTIFIER, + ETD.DEVICE_VERSION, + FEATURE.FEATURE_ID, + FEATURE.NAME AS FEATURE_NAME, + FEATURE.CODE AS FEATURE_CODE, + FEATURE.BIT AS FEATURE_BIT, + DEVICE_TYPE_CLUSTER.CLUSTER_REF + FROM + ENDPOINT_TYPE_DEVICE AS ETD + INNER JOIN + DEVICE_TYPE + ON + ETD.DEVICE_TYPE_REF = DEVICE_TYPE.DEVICE_TYPE_ID + INNER JOIN + DEVICE_TYPE_CLUSTER + ON + DEVICE_TYPE_CLUSTER.DEVICE_TYPE_REF = DEVICE_TYPE.DEVICE_TYPE_ID + INNER JOIN + DEVICE_TYPE_FEATURE + ON + DEVICE_TYPE_FEATURE.DEVICE_TYPE_CLUSTER_REF = DEVICE_TYPE_CLUSTER.DEVICE_TYPE_CLUSTER_ID + INNER JOIN + FEATURE + ON + FEATURE.FEATURE_ID = DEVICE_TYPE_FEATURE.FEATURE_REF + WHERE + ETD.ENDPOINT_TYPE_REF = ${endpointTypeId}` + + (clusterId != 'all' + ? ` AND + DEVICE_TYPE_CLUSTER.CLUSTER_REF = ${clusterId}` + : ``) + ) + return rows.map(dbMapping.map.endpointTypeDeviceExtended) +} + exports.selectAllDeviceTypes = selectAllDeviceTypes exports.selectDeviceTypeById = selectDeviceTypeById exports.selectDeviceTypeByCodeAndName = selectDeviceTypeByCodeAndName @@ -369,3 +465,5 @@ exports.selectDeviceTypeCommandsByDeviceTypeRef = selectDeviceTypeCommandsByDeviceTypeRef exports.updateDeviceTypeEntityReferences = updateDeviceTypeEntityReferences exports.selectDeviceTypesByEndpointTypeId = selectDeviceTypesByEndpointTypeId +exports.selectDeviceTypeFeaturesByEndpointTypeIdAndClusterId = + selectDeviceTypeFeaturesByEndpointTypeIdAndClusterId diff --git a/src-electron/db/query-endpoint-type.js b/src-electron/db/query-endpoint-type.js index 48fd15b192..6bd45ef02b 100644 --- a/src-electron/db/query-endpoint-type.js +++ b/src-electron/db/query-endpoint-type.js @@ -643,6 +643,53 @@ WHERE return rows.map(mapFunction) } +/** + * Given the endpoint type cluster id and attribute code, extract the value + * endpoint type attribute information for that attribute within the endpoint + * type cluster. + * @param {*} db + * @param {*} endpointTypeClusterId + * @param {*} attributeCode + * @param {*} attributeMfgCode + */ +async function selectEndpointTypeAttributeFromEndpointTypeClusterId( + db, + endpointTypeClusterId, + attributeCode, + attributeMfgCode +) { + let eta = await dbApi.dbGet( + db, + ` + SELECT + ETC.ENDPOINT_TYPE_REF, + ETC.CLUSTER_REF, + ETA.INCLUDED, + ETA.STORAGE_OPTION, + ETA.SINGLETON, + ETA.DEFAULT_VALUE + FROM + ATTRIBUTE AS A + INNER JOIN + ENDPOINT_TYPE_ATTRIBUTE AS ETA + ON + ETA.ATTRIBUTE_REF = A.ATTRIBUTE_ID + INNER JOIN + ENDPOINT_TYPE_CLUSTER AS ETC + ON + ETA.ENDPOINT_TYPE_CLUSTER_REF = ETC.ENDPOINT_TYPE_CLUSTER_ID + WHERE + ETC.ENDPOINT_TYPE_CLUSTER_ID = ${endpointTypeClusterId} + AND + A.CODE = ${attributeCode} + ` + + (attributeMfgCode + ? ` AND A.MANUFACTURER_CODE = ${attributeMfgCode}` + : ` AND A.MANUFACTURER_CODE IS NULL`) + ) + return dbMapping.map.endpointTypeAttribute(eta) +} + exports.deleteEndpointType = deleteEndpointType exports.selectAllEndpointTypes = selectAllEndpointTypes exports.selectEndpointTypeIds = selectEndpointTypeIds @@ -652,13 +699,13 @@ exports.selectAllClustersDetailsFromEndpointTypes = selectAllClustersDetailsFromEndpointTypes exports.selectEndpointDetailsFromAddedEndpoints = selectEndpointDetailsFromAddedEndpoints - exports.selectAllClustersNamesFromEndpointTypes = selectAllClustersNamesFromEndpointTypes exports.selectAllClustersDetailsIrrespectiveOfSideFromEndpointTypes = selectAllClustersDetailsIrrespectiveOfSideFromEndpointTypes exports.selectCommandDetailsFromAllEndpointTypeCluster = selectCommandDetailsFromAllEndpointTypeCluster - exports.selectClustersAndEndpointDetailsFromEndpointTypes = selectClustersAndEndpointDetailsFromEndpointTypes +exports.selectEndpointTypeAttributeFromEndpointTypeClusterId = + selectEndpointTypeAttributeFromEndpointTypeClusterId diff --git a/src-electron/db/query-loader.js b/src-electron/db/query-loader.js index 26b637f4d6..85114becd8 100644 --- a/src-electron/db/query-loader.js +++ b/src-electron/db/query-loader.js @@ -618,6 +618,7 @@ async function insertClusters(db, packageId, data) { access: [], } let pTags = null + let pFeatures = null let i for (i = 0; i < lastIdsArray.length; i++) { @@ -642,16 +643,45 @@ async function insertClusters(db, packageId, data) { if ('tags' in data[i]) { pTags = insertTags(db, packageId, data[i].tags, lastId) } + + if ('features' in data[i]) { + pFeatures = insertFeatures(db, packageId, data[i].features, lastId) + } } let pCommand = insertCommands(db, packageId, commands) let pAttribute = insertAttributes(db, packageId, attributes) let pEvent = insertEvents(db, packageId, events) let pArray = [pCommand, pAttribute, pEvent] if (pTags != null) pArray.push(pTags) + if (pFeatures != null) pArray.push(pFeatures) return Promise.all(pArray) }) } +/** + * Inserts features into the database. + * @param {*} db + * @param {*} packageId + * @param {*} data + * @returns A promise that resolves with array of rowids. + */ +async function insertFeatures(db, packageId, data, clusterId) { + return dbApi.dbMultiInsert( + db, + 'INSERT INTO FEATURE (PACKAGE_REF, NAME, CODE, BIT, DEFAULT_VALUE, DESCRIPTION, CONFORMANCE, CLUSTER_REF) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', + data.map((feature) => [ + packageId, + feature.name, + feature.code, + feature.bit, + feature.defaultValue, + feature.description, + feature.conformance, + clusterId, + ]) + ) +} + /** * Inserts tags into the database. * data is an array of objects, containing 'name' and 'description' @@ -895,6 +925,7 @@ async function insertDeviceTypes(db, packageId, data) { let promises = [] promises.push(insertDeviceTypeAttributes(db, dtClusterRefDataPairs)) promises.push(insertDeviceTypeCommands(db, dtClusterRefDataPairs)) + promises.push(insertDeviceTypeFeatures(db, dtClusterRefDataPairs)) return Promise.all(promises) }) } @@ -903,6 +934,30 @@ async function insertDeviceTypes(db, packageId, data) { }) } +/** + * This handles the loading of device type feature requirements into the database. + * There is a need to post-process to attach the actual feature ref after the fact + * @param {*} db + * @param {*} dtClusterRefDataPairs + */ +async function insertDeviceTypeFeatures(db, dtClusterRefDataPairs) { + let features = [] + dtClusterRefDataPairs.map((dtClusterRefDataPair) => { + let dtClusterRef = dtClusterRefDataPair.dtClusterRef + let clusterData = dtClusterRefDataPair.clusterData + if ('features' in clusterData && clusterData.features.length > 0) { + clusterData.features.forEach((featureCode) => { + features.push([dtClusterRef, featureCode]) + }) + } + }) + return dbApi.dbMultiInsert( + db, + 'INSERT INTO DEVICE_TYPE_FEATURE (DEVICE_TYPE_CLUSTER_REF, FEATURE_CODE) VALUES (?, ?)', + features + ) +} + /** * This handles the loading of device type attribute requirements into the database. * There is a need to post-process to attach the actual attribute ref after the fact diff --git a/src-electron/db/query-zcl.js b/src-electron/db/query-zcl.js index e02a226cfd..6b33f018d0 100644 --- a/src-electron/db/query-zcl.js +++ b/src-electron/db/query-zcl.js @@ -1006,7 +1006,8 @@ SELECT ENDPOINT_TYPE_REF, CLUSTER_REF, SIDE, - ENABLED + ENABLED, + ENDPOINT_TYPE_CLUSTER_ID FROM ENDPOINT_TYPE_CLUSTER WHERE diff --git a/src-electron/db/zap-schema.sql b/src-electron/db/zap-schema.sql index e41814ce62..bb4b7ceae3 100644 --- a/src-electron/db/zap-schema.sql +++ b/src-electron/db/zap-schema.sql @@ -355,6 +355,39 @@ CREATE TABLE IF NOT EXISTS "DEVICE_TYPE_CLUSTER" ( foreign key (DEVICE_TYPE_REF) references DEVICE_TYPE(DEVICE_TYPE_ID) on delete cascade, foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID) ); + +/* + DEVICE_TYPE_FEATURE is the junction table between device type and feature + tables. + */ +DROP TABLE IF EXISTS "DEVICE_TYPE_FEATURE"; +CREATE TABLE IF NOT EXISTS "DEVICE_TYPE_FEATURE" ( + "DEVICE_TYPE_CLUSTER_REF" integer, + "FEATURE_REF" integer, + "FEATURE_CODE" text, + foreign key (DEVICE_TYPE_CLUSTER_REF) references DEVICE_TYPE_CLUSTER(DEVICE_TYPE_CLUSTER_ID) on delete cascade, + foreign key (FEATURE_REF) references FEATURE(FEATURE_ID) on delete cascade +); + + +/* + FEATURE contains feature information + */ +DROP TABLE IF EXISTS "FEATURE"; +CREATE TABLE IF NOT EXISTS "FEATURE" ( + "FEATURE_ID" integer primary key autoincrement, + "NAME" text, + "CODE" text, + "BIT" integer, + "DEFAULT_VALUE" integer, + "DESCRIPTION" text, + "CONFORMANCE" text, + "PACKAGE_REF" integer, + "CLUSTER_REF" integer, + foreign key(PACKAGE_REF) references PACKAGE(PACKAGE_ID) on delete cascade, + foreign key(CLUSTER_REF) references CLUSTER(CLUSTER_ID) on delete cascade +); + /* DEVICE_TYPE_ATTRIBUTE contains attribuets that belong to a device type cluster. */ diff --git a/src-electron/importexport/import-json.js b/src-electron/importexport/import-json.js index 05ee033fe5..cc32eddcff 100644 --- a/src-electron/importexport/import-json.js +++ b/src-electron/importexport/import-json.js @@ -22,6 +22,7 @@ const queryPackage = require('../db/query-package.js') const queryImpexp = require('../db/query-impexp.js') const querySession = require('../db/query-session.js') const queryEndpoint = require('../db/query-endpoint.js') +const queryEndpointType = require('../db/query-endpoint-type.js') const queryZcl = require('../db/query-zcl.js') const querySessionNotice = require('../db/query-session-notification.js') const queryDeviceType = require('../db/query-device-type.js') @@ -760,6 +761,14 @@ async function deviceTypeClustersAttributesAndCommands(db, endpointTypeId) { // Commands associated with device types on an endpoint type let deviceTypeCommandsOnEndpointType = [] + // Features associated with device types on an endpoint type + let deviceTypeFeaturesOnEndpointType = + await queryDeviceType.selectDeviceTypeFeaturesByEndpointTypeIdAndClusterId( + db, + endpointTypeId, + 'all' + ) + // Initialize the device type clusters, attributes and commands based on // device types on an endpoint for ( @@ -801,9 +810,32 @@ async function deviceTypeClustersAttributesAndCommands(db, endpointTypeId) { deviceTypeClustersOnEndpointType, deviceTypeAttributesOnEndpointType, deviceTypeCommandsOnEndpointType, + deviceTypeFeaturesOnEndpointType, ] } +/** + * + * @param {*} deviceTypeFeaturesOnEndpointType + * @returns a map between device type's cluster id to feature bits for that cluster + */ +function deviceTypeClusterToFeatureBits(deviceTypeFeaturesOnEndpointType) { + let deviceTypeClustersToFeatureBitMap = {} + for (let i = 0; i < deviceTypeFeaturesOnEndpointType.length; i++) { + let clusterId = deviceTypeFeaturesOnEndpointType[i].clusterId + if (clusterId in deviceTypeClustersToFeatureBitMap) { + deviceTypeClustersToFeatureBitMap[clusterId].push( + deviceTypeFeaturesOnEndpointType[i] + ) + } else { + deviceTypeClustersToFeatureBitMap[clusterId] = [ + deviceTypeFeaturesOnEndpointType[i], + ] + } + } + return deviceTypeClustersToFeatureBitMap +} + /** * Adds device type compliance warnings for clusters to the console and the * session notification table @@ -822,10 +854,16 @@ async function deviceTypeComplianceForClusters( endpointId, sessionId, deviceTypeClustersOnEndpointType, + deviceTypeFeaturesOnEndpointType, endpointTypeClusterRefMap, + endpointTypeClusterRefMapDetailed, deviceTypeSpecCheckComplianceMessage, specMessageIndent ) { + // Create a map keyed by device type cluster associated to device type cluster feature Bits + let deviceTypeClustersToFeatureBitMap = deviceTypeClusterToFeatureBits( + deviceTypeFeaturesOnEndpointType + ) for (let dtc = 0; dtc < deviceTypeClustersOnEndpointType.length; dtc++) { let isDeviceTypeClientClusterFound = endpointTypeClusterRefMap?.[ @@ -836,14 +874,14 @@ async function deviceTypeComplianceForClusters( deviceTypeClustersOnEndpointType[dtc].clusterRef ]?.['server'] let clusterSpecComplianceMessage = '' + let deviceType = await queryDeviceType.selectDeviceTypeById( + db, + deviceTypeClustersOnEndpointType[dtc].deviceTypeRef + ) if ( deviceTypeClustersOnEndpointType[dtc].includeClient && !isDeviceTypeClientClusterFound ) { - let deviceType = await queryDeviceType.selectDeviceTypeById( - db, - deviceTypeClustersOnEndpointType[dtc].deviceTypeRef - ) clusterSpecComplianceMessage = 'âš  Check Device Type Compliance on endpoint: ' + endpointId + @@ -866,14 +904,64 @@ async function deviceTypeComplianceForClusters( 0 ) } + if ( + deviceTypeClustersOnEndpointType[dtc].includeClient && + isDeviceTypeClientClusterFound + ) { + let deviceTypeClusterFeatureBitsInfo = + deviceTypeClustersToFeatureBitMap[ + deviceTypeClustersOnEndpointType[dtc].clusterRef + ] + if (deviceTypeClusterFeatureBitsInfo) { + let endpointTypeClusterFeatureMapValue = + await queryEndpointType.selectEndpointTypeAttributeFromEndpointTypeClusterId( + db, + endpointTypeClusterRefMapDetailed[ + deviceTypeClustersOnEndpointType[dtc].clusterRef + ]['client'].endpointTypeClusterId, + '0xFFFC', + null + ) + for (let i = 0; i < deviceTypeClusterFeatureBitsInfo.length; i++) { + if ( + endpointTypeClusterFeatureMapValue.storageOption != + dbEnum.storageOption.external && + !( + endpointTypeClusterFeatureMapValue.defaultValue & + (1 << deviceTypeClusterFeatureBitsInfo[i].featureBit) + ) + ) { + let featureMapComplianceMessage = + 'âš  Check Device Type Compliance on endpoint: ' + + endpointId + + ', device type: ' + + deviceType.name + + ', cluster: ' + + deviceTypeClustersOnEndpointType[dtc].clusterName + + ' client needs bit ' + + deviceTypeClusterFeatureBitsInfo[i].featureBit + + ' enabled in the Feature Map attribute' + deviceTypeSpecCheckComplianceMessage = + deviceTypeSpecCheckComplianceMessage.concat( + specMessageIndent, + featureMapComplianceMessage + ) + querySessionNotice.setNotification( + db, + 'WARNING', + featureMapComplianceMessage, + sessionId, + 1, + 0 + ) + } + } + } + } if ( deviceTypeClustersOnEndpointType[dtc].includeServer && !isDeviceTypeServerClusterFound ) { - let deviceType = await queryDeviceType.selectDeviceTypeById( - db, - deviceTypeClustersOnEndpointType[dtc].deviceTypeRef - ) clusterSpecComplianceMessage = 'âš  Check Device Type Compliance on endpoint: ' + endpointId + @@ -896,6 +984,61 @@ async function deviceTypeComplianceForClusters( 0 ) } + + if ( + deviceTypeClustersOnEndpointType[dtc].includeServer && + isDeviceTypeServerClusterFound + ) { + let deviceTypeClusterFeatureBitsInfo = + deviceTypeClustersToFeatureBitMap[ + deviceTypeClustersOnEndpointType[dtc].clusterRef + ] + if (deviceTypeClusterFeatureBitsInfo) { + let endpointTypeClusterFeatureMapValue = + await queryEndpointType.selectEndpointTypeAttributeFromEndpointTypeClusterId( + db, + endpointTypeClusterRefMapDetailed[ + deviceTypeClustersOnEndpointType[dtc].clusterRef + ]['server'].endpointTypeClusterId, + '0xFFFC', + null + ) + for (let i = 0; i < deviceTypeClusterFeatureBitsInfo.length; i++) { + if ( + endpointTypeClusterFeatureMapValue.storageOption != + dbEnum.storageOption.external && + !( + endpointTypeClusterFeatureMapValue.defaultValue & + (1 << deviceTypeClusterFeatureBitsInfo[i].featureBit) + ) + ) { + let featureMapComplianceMessage = + 'âš  Check Device Type Compliance on endpoint: ' + + endpointId + + ', device type: ' + + deviceType.name + + ', cluster: ' + + deviceTypeClustersOnEndpointType[dtc].clusterName + + ' server needs bit ' + + deviceTypeClusterFeatureBitsInfo[i].featureBit + + ' enabled in the Feature Map attribute' + deviceTypeSpecCheckComplianceMessage = + deviceTypeSpecCheckComplianceMessage.concat( + specMessageIndent, + featureMapComplianceMessage + ) + querySessionNotice.setNotification( + db, + 'WARNING', + featureMapComplianceMessage, + sessionId, + 1, + 0 + ) + } + } + } + } } return deviceTypeSpecCheckComplianceMessage } @@ -1222,13 +1365,17 @@ async function importEndpointTypes( endpointTypeId ) let endpointTypeClusterRefMap = {} + let endpointTypeClusterRefMapDetailed = {} let allMandatoryAttributes = [] let allMandatoryCommands = [] for (let len = 0; len < endpointTypeClusters.length; len++) { let epc = endpointTypeClusters[len] endpointTypeClusterRefMap[epc.clusterRef] = endpointTypeClusterRefMap[epc.clusterRef] || {} + endpointTypeClusterRefMapDetailed[epc.clusterRef] = + endpointTypeClusterRefMapDetailed[epc.clusterRef] || {} endpointTypeClusterRefMap[epc.clusterRef][epc.side] = epc.enabled + endpointTypeClusterRefMapDetailed[epc.clusterRef][epc.side] = epc let cluster = await queryZcl.selectClusterById(db, epc.clusterRef) // Mandatory Cluster Attributes @@ -1314,6 +1461,7 @@ async function importEndpointTypes( deviceTypeClustersOnEndpointType, deviceTypeAttributesOnEndpointType, deviceTypeCommandsOnEndpointType, + deviceTypeFeaturesOnEndpointType, ] = await deviceTypeClustersAttributesAndCommands(db, endpointTypeId) // Cluster compliance as per the spec. Checking if a device type requires @@ -1324,7 +1472,9 @@ async function importEndpointTypes( endpointId, sessionId, deviceTypeClustersOnEndpointType, + deviceTypeFeaturesOnEndpointType, endpointTypeClusterRefMap, + endpointTypeClusterRefMapDetailed, deviceTypeSpecCheckComplianceMessage, specMessageIndent ) diff --git a/src-electron/zcl/zcl-loader-silabs.js b/src-electron/zcl/zcl-loader-silabs.js index f04b61dab0..a4fc59198e 100644 --- a/src-electron/zcl/zcl-loader-silabs.js +++ b/src-electron/zcl/zcl-loader-silabs.js @@ -662,6 +662,22 @@ function prepareCluster(cluster, context, isExtension = false) { }) } + if ('features' in cluster) { + ret.features = [] + cluster.features[0].feature.forEach((feature) => { + let f = { + name: feature.$.name, + code: feature.$.code, + bit: feature.$.bit, + defaultValue: feature.$.default, + description: feature.$.summary, + conformance: feature.$.conformance, + } + + ret.features.push(f) + }) + } + return ret } @@ -996,7 +1012,11 @@ function prepareDataType(a, dataType, typeMap) { id: parseInt(a.$.id), description: a.$.description ? a.$.description : a.$.name, discriminator_ref: dataType ? dataType : dataTypeRef, - cluster_code: a.cluster ? a.cluster : null, + cluster_code: a.cluster + ? a.cluster + : a.$.cluster_code + ? [{ $: { code: a.$.cluster_code[0] } }] + : null, // else case: Treating features in a cluster as a bitmap } } @@ -1258,7 +1278,11 @@ function prepareEnumOrBitmap(db, packageId, a, dataType, typeMap) { return { name: a.$.name, type: a.$.type.toLowerCase(), - cluster_code: a.cluster ? a.cluster : null, + cluster_code: a.cluster + ? a.cluster + : a.$.cluster_code + ? [{ $: { code: a.$.cluster_code[0] } }] + : null, // else case: Treating features in a cluster as a bitmap discriminator_ref: dataType, } } @@ -1404,21 +1428,40 @@ async function processBitmapFields( env.logDebug(`${filePath}, ${packageId}: ${data.length} Bitmap Fields.`) let bitmapFields = [] let lastFieldId = -1 - data.forEach((bm) => { - if ('field' in bm) { - bm.field.forEach((item) => { - let defaultFieldId = lastFieldId + 1 - lastFieldId = item.$.fieldId ? parseInt(item.$.fieldId) : defaultFieldId - bitmapFields.push({ - bitmapName: bm.$.name, - bitmapClusterCode: bm.cluster ? bm.cluster : null, - name: item.$.name, - mask: parseInt(item.$.mask), - fieldIdentifier: lastFieldId, + if (!('features' in data)) { + data.forEach((bm) => { + if ('field' in bm) { + bm.field.forEach((item) => { + let defaultFieldId = lastFieldId + 1 + lastFieldId = item.$.fieldId + ? parseInt(item.$.fieldId) + : defaultFieldId + bitmapFields.push({ + bitmapName: bm.$.name, + bitmapClusterCode: bm.cluster ? bm.cluster : null, + name: item.$.name, + mask: parseInt(item.$.mask), + fieldIdentifier: lastFieldId, + }) }) + } + }) + // Treating features in a cluster as a bitmap + } else if ( + 'features' in data && + data.features.length == 1 && + 'feature' in data.features[0] + ) { + data.features[0].feature.forEach((item) => { + bitmapFields.push({ + bitmapName: 'Feature', + bitmapClusterCode: [{ $: { code: data.code[0] } }], + name: item.$.name, + mask: 1 << item.$.bit, + fieldIdentifier: item.$.bit, }) - } - }) + }) + } return queryLoader.insertBitmapFields( db, packageId, @@ -1551,12 +1594,21 @@ function prepareDeviceType(deviceType) { cluster.include.forEach((include) => { let attributes = [] let commands = [] + let features = [] if ('requireAttribute' in include) { attributes = include.requireAttribute } if ('requireCommand' in include) { commands = include.requireCommand } + if ('features' in include) { + include.features[0].feature.forEach((f) => { + // Only adding madatory features for now + if (f.mandatoryConform && f.mandatoryConform[0] === '') { + features.push(f.$.name) + } + }) + } ret.clusters.push({ client: 'true' == include.$.client, server: 'true' == include.$.server, @@ -1566,6 +1618,7 @@ function prepareDeviceType(deviceType) { include.$.cluster != undefined ? include.$.cluster : include._, requiredAttributes: attributes, requiredCommands: commands, + features: features, }) }) } @@ -1611,6 +1664,7 @@ async function processParsedZclData( let packageId = argument.packageId previouslyKnownPackages.add(packageId) let knownPackages = Array.from(previouslyKnownPackages) + let featureClusters = [] if (!('result' in argument)) { return [] @@ -1659,6 +1713,7 @@ async function processParsedZclData( ) } if ('cluster' in toplevel) { + featureClusters = toplevel.cluster.filter((c) => 'features' in c) batch2.push( processClusters(db, filePath, packageId, toplevel.cluster, context) ) @@ -1691,6 +1746,31 @@ async function processParsedZclData( ) ) } + + // Treating features in a cluster as a bitmap + if (featureClusters.length > 0) { + featureClusters.forEach((fc) => { + batch3.push( + processDataType( + db, + filePath, + packageId, + knownPackages, + [ + { + $: { + name: 'Feature', + type: 'BITMAP32', + cluster_code: [fc.code[0]], + }, + }, + ], + dbEnum.zclType.bitmap + ) + ) + }) + } + if (dbEnum.zclType.enum in toplevel) { batch3.push( processDataType( @@ -1759,6 +1839,22 @@ async function processParsedZclData( processBitmap(db, filePath, packageId, knownPackages, toplevel.bitmap) ) } + // Treating features in a cluster as a bitmap + if (featureClusters.length > 0) { + featureClusters.forEach((fc) => { + Batch5.push( + processBitmap(db, filePath, packageId, knownPackages, [ + { + $: { + name: 'Feature', + type: 'BITMAP32', + cluster_code: [fc.code[0]], + }, + }, + ]) + ) + }) + } if (dbEnum.zclType.struct in toplevel) { Batch5.push( processStruct(db, filePath, packageId, knownPackages, toplevel.struct) @@ -1784,6 +1880,14 @@ async function processParsedZclData( ) ) } + // Treating features in a cluster as a bitmap + if (featureClusters.length > 0) { + featureClusters.forEach((fc) => { + batch6.push( + processBitmapFields(db, filePath, packageId, knownPackages, fc) + ) + }) + } if (dbEnum.zclType.struct in toplevel) { batch6.push( processStructItems( diff --git a/src/util/ui-options.js b/src/util/ui-options.js index d68db53f99..5ec221da4a 100644 --- a/src/util/ui-options.js +++ b/src/util/ui-options.js @@ -35,7 +35,8 @@ export default { } }, mounted() { - const zclProperties = this.$store.state.zap.selectedZapConfig?.zclProperties + const zapState = this.$store.state.zap + const zclProperties = zapState.selectedZapConfig?.zclProperties let multiDeviceCategories = [] let enableMatterFeatures = false let enableZigbeeFeatures = false @@ -44,8 +45,20 @@ export default { enableMatterFeatures = multiDeviceCategories.includes('matter') enableZigbeeFeatures = multiDeviceCategories.includes('zigbee') } else { - multiDeviceCategories = - this.$store.state.zap.selectedZapConfig?.zclProperties?.category + let selectedZapConfig = zapState.selectedZapConfig + multiDeviceCategories = selectedZapConfig?.zclProperties?.category + // the use case when there is only one zcl and template package and user + // does not have any packages to select from. + if ( + !multiDeviceCategories && + selectedZapConfig && + selectedZapConfig.zclProperties && + selectedZapConfig.zclProperties.length == 0 && + zapState.packages && + zapState.packages.length > 0 + ) { + multiDeviceCategories = zapState.packages[0]?.sessionPackage?.category + } enableMatterFeatures = multiDeviceCategories == 'matter' // Showing zigbee UI by default when category is not defined enableZigbeeFeatures = diff --git a/test/gen-matter-1.test.js b/test/gen-matter-1.test.js index eb93bd3e97..613e21e664 100644 --- a/test/gen-matter-1.test.js +++ b/test/gen-matter-1.test.js @@ -79,6 +79,34 @@ test('Validate loading', async () => { expect(cluster.name).toBe('OTA Software Update Provider') }) +test('Validate loading of features as bitmap', async () => { + /* See level-control-cluster.xml which has the following: + + + + + + + + + + + + */ + let clusterInfo = await queryZcl.selectClusterByCode(db, zclPackageId, 0x0008) + + let dataType = await queryZcl.selectDataTypeByNameAndClusterId( + db, + 'Feature', + clusterInfo.id, + [zclPackageId] + ) + expect(dataType).not.toBeNull() + expect(dataType.name).toEqual('Feature') +}) + test( 'Basic gen template parsing and generation', async () => { diff --git a/test/gen-matter-4.test.js b/test/gen-matter-4.test.js index cafff1924b..24de1c25fc 100644 --- a/test/gen-matter-4.test.js +++ b/test/gen-matter-4.test.js @@ -520,6 +520,19 @@ test( // Cluster coming from just MA-dimmablelight and not MA-onofflight expect(clusterNames.includes('Level Control')).toEqual(true) + // Test to make sure the featureMap attribute value for level control cluster + // is set correctly when a device type is added as per its device type cluster + // feature compliance + let levelControlCluster = clusters.find((cl) => cl.name == 'Level Control') + let levelControlClusterFeatureMapAttribute = + await queryEndpointType.selectEndpointTypeAttributeFromEndpointTypeClusterId( + db, + levelControlCluster.endpointTypeClusterId, + '0xFFFC', + null + ) + expect(levelControlClusterFeatureMapAttribute.defaultValue).toEqual('3') + // Edit the endpoint type and add another device type and test the update let additionalMatterLightDevice = allDeviceTypes.filter( (data) => data.label === 'MA-colortemperaturelight' diff --git a/test/multi-protocol.test.js b/test/multi-protocol.test.js index 8cec329aa0..0eb95c18ca 100644 --- a/test/multi-protocol.test.js +++ b/test/multi-protocol.test.js @@ -155,11 +155,42 @@ test( ) // Notifications test when opening multi-protocol zap file - let sessionNotfifications = await querySessionNotice.getNotification( + let sessionNotifications = await querySessionNotice.getNotification( db, importRes.sessionId ) - expect(sessionNotfifications.length).toEqual(1) // Just one notification regarding multiple top level zcl propertoes + let sessionNotificationMessages = sessionNotifications.map( + (sn) => sn.message + ) + + // Tests for the feature Map attribute compliance based on device type cluster features + expect( + sessionNotificationMessages.includes( + 'âš  Check Device Type Compliance on endpoint: 1, device type: MA-onofflight, cluster: On/Off server needs bit 0 enabled in the Feature Map attribute' + ) + ).toBeTruthy() + + expect( + sessionNotificationMessages.includes( + 'âš  Check Device Type Compliance on endpoint: 1, device type: MA-dimmablelight, cluster: Level Control server needs bit 0 enabled in the Feature Map attribute' + ) + ).toBeTruthy() + + expect( + sessionNotificationMessages.includes( + 'âš  Check Device Type Compliance on endpoint: 1, device type: MA-dimmablelight, cluster: Level Control server needs bit 1 enabled in the Feature Map attribute' + ) + ).toBeTruthy() + + expect( + sessionNotificationMessages.includes( + 'âš  Check Device Type Compliance on endpoint: 1, device type: MA-dimmablelight, cluster: On/Off server needs bit 0 enabled in the Feature Map attribute' + ) + ).toBeTruthy() + + // Just one notification regarding multiple top level zcl propertoes and 4 + // notifications regarding feature map attribute not set correctly + expect(sessionNotifications.length).toEqual(5) }, testUtil.timeout.long() ) diff --git a/zap-schema.dot b/zap-schema.dot index c5ffb643c9..93196fdd27 100644 --- a/zap-schema.dot +++ b/zap-schema.dot @@ -29,7 +29,7 @@ digraph "SchemaCrawler_Diagram" {
generated on - 2023-11-30 15:16:08 + 2024-04-15 15:19:11
> @@ -545,6 +545,7 @@ digraph "SchemaCrawler_Diagram" { "data_type_cluster_8d9f2ca9":"cluster_ref_62a2f505.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "device_type_cluster_7298b97d":"cluster_ref_1cdb02b1.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_cluster_c12e3c9e":"cluster_ref_a0f5e3b0.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "feature_f06e7b35":"cluster_ref_59bd77f9.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "global_attribute_default_73c65a21":"cluster_ref_4161768d.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "tag_1b7d9":"cluster_ref_3c91cfd5.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "attribute_a6e02edb":"cluster_ref_71823913.start":w -> "cluster_5ec71239":"cluster_id_a557fe87.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; @@ -1071,6 +1072,7 @@ digraph "SchemaCrawler_Diagram" { "device_type_attribute_ce5151f":"device_type_cluster_ref_c47e8093.start":w -> "device_type_cluster_7298b97d":"device_type_cluster_id_665321ff.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "device_type_command_774386ce":"device_type_cluster_ref_a5ee44c4.start":w -> "device_type_cluster_7298b97d":"device_type_cluster_id_665321ff.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "device_type_feature_4402279":"device_type_cluster_ref_b8851e79.start":w -> "device_type_cluster_7298b97d":"device_type_cluster_id_665321ff.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; /* DEVICE_TYPE_COMMAND -=-=-=-=-=-=-=-=-=-=-=-=-=- */ @@ -1102,6 +1104,35 @@ digraph "SchemaCrawler_Diagram" { + /* DEVICE_TYPE_FEATURE -=-=-=-=-=-=-=-=-=-=-=-=-=- */ + "device_type_feature_4402279" [ + label=< +
+ + + + + + + + + + + + + + + + + + + +
DEVICE_TYPE_FEATURE[table]
DEVICE_TYPE_CLUSTER_REF INTEGER
FEATURE_REF INTEGER
FEATURE_CODE TEXT
+ > + ]; + + + /* DISCRIMINATOR -=-=-=-=-=-=-=-=-=-=-=-=-=- */ "discriminator_4931d2db" [ label=< @@ -1219,10 +1250,16 @@ digraph "SchemaCrawler_Diagram" { INTEGER + + PARENT_ENDPOINT_REF + + INTEGER + > ]; + "endpoint_966d81f4":"parent_endpoint_ref_600434ca.start":w -> "endpoint_966d81f4":"endpoint_id_73e3b891.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; /* ENDPOINT_TYPE -=-=-=-=-=-=-=-=-=-=-=-=-=- */ @@ -1244,9 +1281,9 @@ digraph "SchemaCrawler_Diagram" { auto-incremented - SESSION_REF + SESSION_PARTITION_REF - INTEGER + INTEGER NAME @@ -1257,9 +1294,9 @@ digraph "SchemaCrawler_Diagram" { > ]; - "endpoint_966d81f4":"endpoint_type_ref_80c21de4.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_cluster_c12e3c9e":"endpoint_type_ref_ae18b87a.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_device_e685fbb0":"endpoint_type_ref_33b8dba8.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "endpoint_966d81f4":"endpoint_type_ref_80c21de4.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_attribute_c265400":"endpoint_type_ref_c2238d58.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_command_c5d909ef":"endpoint_type_ref_3ec79549.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "endpoint_type_event_e67d6e7e":"endpoint_type_ref_32afc29a.start":w -> "endpoint_type_9857dc03":"endpoint_type_id_960ad7f3.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; @@ -1782,6 +1819,71 @@ digraph "SchemaCrawler_Diagram" { + /* FEATURE -=-=-=-=-=-=-=-=-=-=-=-=-=- */ + "feature_f06e7b35" [ + label=< + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FEATURE[table]
FEATURE_ID INTEGER
auto-incremented
NAME TEXT
CODE TEXT
BIT INTEGER
DEFAULT_VALUE INTEGER
DESCRIPTION TEXT
CONFORMANCE TEXT
PACKAGE_REF INTEGER
CLUSTER_REF INTEGER
+ > + ]; + + "device_type_feature_4402279":"feature_ref_edb34431.start":w -> "feature_f06e7b35":"feature_id_314fda8f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + + /* GLOBAL_ATTRIBUTE_BIT -=-=-=-=-=-=-=-=-=-=-=-=-=- */ "global_attribute_bit_e934f16d" [ label=< @@ -1996,6 +2098,7 @@ digraph "SchemaCrawler_Diagram" { "data_type_9233070e":"package_ref_6ac2838c.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "default_access_7ba041a1":"package_ref_aefc9b59.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "domain_78873d23":"package_ref_4ef51017.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "feature_f06e7b35":"package_ref_d3f59445.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "package_option_default_64a251ef":"package_ref_e63c94cb.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "session_package_61fa13bc":"package_ref_93dd0c9e.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "tag_1b7d9":"package_ref_b6c9ec21.start":w -> "package_fab13485":"package_id_7a1f4fef.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; @@ -2379,13 +2482,12 @@ digraph "SchemaCrawler_Diagram" { > ]; - "endpoint_type_9857dc03":"session_ref_f1b3f387.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "session_key_value_334d9527":"session_ref_b5755ee3.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "session_log_7f10ae3a":"session_ref_e2156830.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "session_notice_84addd20":"session_ref_901e160a.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; - "endpoint_966d81f4":"session_ref_b6530bb6.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "session_partition_f35f84a0":"session_ref_f7a15e8a.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; "package_extension_value_8e65d377":"session_ref_bd64ea93.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; - "session_package_61fa13bc":"session_ref_5c58b2ee.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "endpoint_966d81f4":"session_ref_b6530bb6.start":w -> "session_a11c82d5":"session_id_26c1b4f.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; /* SESSION_KEY_VALUE -=-=-=-=-=-=-=-=-=-=-=-=-=- */ @@ -2509,9 +2611,9 @@ digraph "SchemaCrawler_Diagram" { [table] - SESSION_REF + SESSION_PARTITION_REF - INTEGER + INTEGER PACKAGE_REF @@ -2534,6 +2636,42 @@ digraph "SchemaCrawler_Diagram" { + /* SESSION_PARTITION -=-=-=-=-=-=-=-=-=-=-=-=-=- */ + "session_partition_f35f84a0" [ + label=< + + + + + + + + + + + + + + + + + + + + + + + + + +
SESSION_PARTITION[table]
SESSION_PARTITION_ID INTEGER
auto-incremented
SESSION_PARTITION_NUMBER INTEGER
SESSION_REF INTEGER
+ > + ]; + + "endpoint_type_9857dc03":"session_partition_ref_83bb17d2.start":w -> "session_partition_f35f84a0":"session_partition_id_dc36f939.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + "session_package_61fa13bc":"session_partition_ref_ee5fd739.start":w -> "session_partition_f35f84a0":"session_partition_id_dc36f939.end":e [label=<> style="solid" dir="both" arrowhead="teetee" arrowtail="crowodot"]; + + /* SETTING -=-=-=-=-=-=-=-=-=-=-=-=-=- */ "setting_a12b0e8f" [ label=< diff --git a/zap-schema.svg b/zap-schema.svg index 587b0aaf1a..d841d1ce02 100644 --- a/zap-schema.svg +++ b/zap-schema.svg @@ -4,2443 +4,2570 @@ - - + + SchemaCrawler_Diagram - -generated by -SchemaCrawler 16.16.18 -generated on -2023-11-30 15:16:08 - + +generated by +SchemaCrawler 16.16.18 +generated on +2024-04-15 15:19:11 + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + 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 - - - - + + + + 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 -API_MATURITY - -TEXT - + +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 - - - - + + + + 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 - - - - + + + + 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 -API_MATURITY - -TEXT - + +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 - - - - + + + + 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 - - - - + + + + - + 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 - - - - + + + + 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 - - - - + + + + - + 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 - - - - + + + + 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 - - - - + + + + - + 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 - - - - + + + + - + access_modifier_f63f3fb1:w->package_fab13485:e - - - - + + + + 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 - - - - + + + + - + attribute_a6e02edb:w->cluster_5ec71239:e - - - - + + + + - + attribute_a6e02edb:w->package_fab13485:e - - - - + + + + - + 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 - - - - + + + + - + attribute_a6e02edb:w->spec_27641a:e - - - - + + + + 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 - - - - + + + + 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 + +[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 - - - - + + + + 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 - - - - + + + + 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 - - - - + + + + - + 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_PARTITION_REF + +INTEGER +NAME + +TEXT + - + endpoint_type_attribute_c265400:w->endpoint_type_9857dc03:e - - - - + + + + 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 - - - - + + + + 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 - - - - + + + + - + cluster_5ec71239:w->package_fab13485:e - - - - + + + + - + cluster_5ec71239:w->spec_27641a:e - - - - + + + + - + cluster_5ec71239:w->spec_27641a:e - - - - + + + + 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 - - - - + + + + - + data_type_cluster_8d9f2ca9:w->data_type_9233070e:e - - - - + + + + device_type_cluster_7298b97d:w->cluster_5ec71239:e - - - - + + + + - + 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 - - - - + + + + endpoint_type_cluster_c12e3c9e:w->cluster_5ec71239:e - - - - + + + + - + endpoint_type_cluster_c12e3c9e:w->endpoint_type_9857dc03:e - - - - + + + + - + +feature_f06e7b35 + +FEATURE + +[table] +FEATURE_ID + +INTEGER + +auto-incremented +NAME + +TEXT +CODE + +TEXT +BIT + +INTEGER +DEFAULT_VALUE + +INTEGER +DESCRIPTION + +TEXT +CONFORMANCE + +TEXT +PACKAGE_REF + +INTEGER +CLUSTER_REF + +INTEGER + + + + +feature_f06e7b35:w->cluster_5ec71239:e + + + + + + + +feature_f06e7b35:w->package_fab13485:e + + + + + + + tag_1b7d9 - -TAG - -[table] -TAG_ID - -INTEGER - -auto-incremented -PACKAGE_REF - -INTEGER -CLUSTER_REF - -INTEGER -NAME - -TEXT -DESCRIPTION - -TEXT - + +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 - - - - + + + + - + event_3f4eed9:w->cluster_5ec71239:e - - - - + + + + - + event_3f4eed9:w->package_fab13485:e - - - - + + + + - + event_3f4eed9:w->spec_27641a:e - - - - + + + + - + event_3f4eed9:w->spec_27641a:e - - - - + + + + - + command_6371df8a:w->cluster_5ec71239:e - - - - + + + + - + command_6371df8a:w->command_6371df8a:e - - - - + + + + - + 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 + +[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 - - - - + + + + - + 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 - - - - + + + + - + command_arg_294e7f81:w->spec_27641a:e - - - - + + + + - + command_arg_294e7f81:w->spec_27641a:e - - - - + + + + - + 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 -IS_INCOMING - -INTEGER -IS_ENABLED - -INTEGER - + +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->endpoint_type_cluster_c12e3c9e:e - - - - + + + + - + endpoint_type_command_c5d909ef:w->command_6371df8a:e - - - - + + + + - + endpoint_type_command_c5d909ef:w->endpoint_type_9857dc03:e - - - - + + + + - + 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 - - - - + + + + - + data_type_9233070e:w->package_fab13485:e - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + struct_item_d6e4bd9c:w->struct_9268f434:e - - - - + + + + - + device_type_2620a7e2:w->package_fab13485:e - - - - + + + + - + 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 - - - - + + + + - + endpoint_type_device_e685fbb0:w->endpoint_type_9857dc03:e - - - - + + + + + + + +device_type_feature_4402279 + +DEVICE_TYPE_FEATURE + +[table] +DEVICE_TYPE_CLUSTER_REF + +INTEGER +FEATURE_REF + +INTEGER +FEATURE_CODE + +TEXT + + + + +device_type_feature_4402279:w->device_type_cluster_7298b97d:e + + + + + + + +device_type_feature_4402279:w->feature_f06e7b35:e + + + + - + discriminator_4931d2db:w->package_fab13485:e - - - - + + + + - + 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 - - - - + + + + - + domain_78873d23:w->spec_27641a:e - - - - + + + + - + 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 +PARENT_ENDPOINT_REF + +INTEGER + + + + +endpoint_966d81f4:w->endpoint_966d81f4:e + + + + - + endpoint_966d81f4:w->endpoint_type_9857dc03:e - - - - + + + + - + session_a11c82d5 - -SESSION - -[table] -SESSION_ID - -INTEGER - -auto-incremented -USER_REF - -INTEGER -SESSION_KEY - -TEXT -CREATION_TIME - -INTEGER -DIRTY - -INTEGER -NEW_NOTIFICATION - -INTEGER - + +SESSION + +[table] +SESSION_ID + +INTEGER + +auto-incremented +USER_REF + +INTEGER +SESSION_KEY + +TEXT +CREATION_TIME + +INTEGER +DIRTY + +INTEGER +NEW_NOTIFICATION + +INTEGER + - + endpoint_966d81f4:w->session_a11c82d5:e - - - - - - - -endpoint_type_9857dc03:w->session_a11c82d5:e - - - - + + + + + + + +session_partition_f35f84a0 + +SESSION_PARTITION + +[table] +SESSION_PARTITION_ID + +INTEGER + +auto-incremented +SESSION_PARTITION_NUMBER + +INTEGER +SESSION_REF + +INTEGER + + + + +endpoint_type_9857dc03:w->session_partition_f35f84a0:e + + + + - + 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 - - - - + + + + - + endpoint_type_event_e67d6e7e:w->event_3f4eed9:e - - - - + + + + - + endpoint_type_event_e67d6e7e:w->endpoint_type_9857dc03:e - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + event_field_d102b734:w->spec_27641a:e - - - - + + + + - + event_field_d102b734:w->spec_27641a:e - - - - + + + + - + 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 - - - - + + + + - + global_attribute_bit_e934f16d:w->tag_1b7d9:e - - - - + + + + - + operation_93359a6:w->package_fab13485:e - - - - + + + + - + package_fab13485:w->package_fab13485:e - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + package_option_default_64a251ef:w->package_option_1931d70d:e - - - - + + + + - + session_package_61fa13bc - -SESSION_PACKAGE - -[table] -SESSION_REF - -INTEGER -PACKAGE_REF - -INTEGER -REQUIRED - -INTEGER -ENABLED - -INTEGER - + +SESSION_PACKAGE + +[table] +SESSION_PARTITION_REF + +INTEGER +PACKAGE_REF + +INTEGER +REQUIRED + +INTEGER +ENABLED + +INTEGER + - + session_package_61fa13bc:w->package_fab13485:e - - - - + + + + - - -session_package_61fa13bc:w->session_a11c82d5:e - - - - + + +session_package_61fa13bc:w->session_partition_f35f84a0:e + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + package_extension_value_8e65d377:w->session_a11c82d5:e - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + - + 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 - - - - + + + + + + + +session_partition_f35f84a0:w->session_a11c82d5:e + + + + - + setting_a12b0e8f - -SETTING - -[table] -CATEGORY - -TEXT -KEY - -TEXT -"VALUE" - -TEXT - + +SETTING + +[table] +CATEGORY + +TEXT +KEY + +TEXT +"VALUE" + +TEXT + diff --git a/zcl-builtin/matter/data-model/chip/color-control-cluster.xml b/zcl-builtin/matter/data-model/chip/color-control-cluster.xml index af32bca3eb..433fde24b0 100644 --- a/zcl-builtin/matter/data-model/chip/color-control-cluster.xml +++ b/zcl-builtin/matter/data-model/chip/color-control-cluster.xml @@ -106,6 +106,23 @@ limitations under the License. true + + + + + + + + + + + + + + + + + CurrentHue diff --git a/zcl-builtin/matter/data-model/chip/level-control-cluster.xml b/zcl-builtin/matter/data-model/chip/level-control-cluster.xml index f021ee151a..0bf8713a5f 100644 --- a/zcl-builtin/matter/data-model/chip/level-control-cluster.xml +++ b/zcl-builtin/matter/data-model/chip/level-control-cluster.xml @@ -52,6 +52,20 @@ limitations under the License. true true + + + + + + + + + + + + CurrentLevel diff --git a/zcl-builtin/matter/data-model/chip/matter-devices.xml b/zcl-builtin/matter/data-model/chip/matter-devices.xml index be554e8e2d..4cb71b1d87 100644 --- a/zcl-builtin/matter/data-model/chip/matter-devices.xml +++ b/zcl-builtin/matter/data-model/chip/matter-devices.xml @@ -310,6 +310,11 @@ limitations under the License. GetSceneMembershipResponse + + + + + ON_OFF GLOBAL_SCENE_CONTROL ON_TIME @@ -323,6 +328,14 @@ limitations under the License. OnWithTimedOff + + + + + + + + CURRENT_LEVEL OPTIONS LEVEL_CONTROL_REMAINING_TIME diff --git a/zcl-builtin/matter/data-model/chip/onoff-cluster.xml b/zcl-builtin/matter/data-model/chip/onoff-cluster.xml index 1389de212b..7eadf41a8e 100644 --- a/zcl-builtin/matter/data-model/chip/onoff-cluster.xml +++ b/zcl-builtin/matter/data-model/chip/onoff-cluster.xml @@ -55,6 +55,33 @@ limitations under the License. Attributes and commands for switching devices between 'On' and 'Off' states. + + + + + + + + + + + + + + + + + + + + + + + + + + + OnOff GlobalSceneControl OnTime